我最近需要将数据表序列化为JSON.我在哪里我们仍然在.Net 2.0,所以我不能在.Net 3.5中使用JSON序列化器.我想这一定是有人做过,所以我去网上找,并发现了一个数量的不同 选项.其中一些依赖于一个额外的库,我很难在这里推进.其他人需要先转换List<Dictionary<>>,这似乎有点尴尬和不必要.另一个处理所有值,如字符串.出于某种原因,我无法真正落后于他们,所以我决定推出自己的,我发布在下面.
正如您从阅读//TODO评论中看到的那样,它在一些地方是不完整的.这段代码已经在生产中,所以它在基本意义上"起作用".它不完整的地方是我们知道我们的生产数据当前不会命中它的地方(数据库中没有时间跨度或字节数组).我在这里发帖的原因是我觉得这可能会更好一些,我希望能帮助完成和改进这段代码.欢迎任何投入.
请注意,此功能内置于.Net 3.5及更高版本中,因此今天使用此代码的唯一原因是,您仍然只能使用.Net 2.0.即便如此,JSON.Net已成为此类事物的goto库.
public static class JSONHelper
{
public static string FromDataTable(DataTable dt)
{
string rowDelimiter = "";
StringBuilder result = new StringBuilder("[");
foreach (DataRow row in dt.Rows)
{
result.Append(rowDelimiter);
result.Append(FromDataRow(row));
rowDelimiter = ",";
}
result.Append("]");
return result.ToString();
}
public static string FromDataRow(DataRow row)
{
DataColumnCollection cols = row.Table.Columns;
string colDelimiter = "";
StringBuilder result = new StringBuilder("{");
for (int i = 0; i < …Run Code Online (Sandbox Code Playgroud) 如何在数据表中添加复选框并将其绑定到数据网格?
DataTable ColumnList = new DataTable();
ColumnList.Columns.Add("Column Fields");
int j = 1, i = 0;
CheckBox colCheckbox = new CheckBox();
foreach (Columns col in ColumnNames)
{
colCheckbox.Name = col.ColumnName;
ColumnList.Rows.Add(colCheckbox); // This is getting displayed as System.Windows.Forms.CheckBox,CheckState=0
}
Run Code Online (Sandbox Code Playgroud)
请帮忙.
好.我有一个包含多列和多行的DataTable.
我想动态地遍历DataTable,输出应该如下所示,不包括大括号:
Name (DataColumn)
Tom (DataRow)
Peter (DataRow)
Surname (DataColumn)
Smith (DataRow)
Brown (DataRow)
foreach (DataColumn col in rightsTable.Columns)
{
foreach (DataRow row in rightsTable.Rows)
{
//output
}
}
Run Code Online (Sandbox Code Playgroud)
我输入了它,发现这不起作用.有人可以建议更好的方法吗?
我想知道是否可以将值添加到特定的DataTable单元格?
假设我有一个现有的dataTable,并且我添加了一个新列,如何在不覆盖现有列的行的情况下添加到新列的行?
据我所知,没有一种方法可以添加到特定的细胞(除非我错了).
dt.Rows.Add(a, b, c, d)
Run Code Online (Sandbox Code Playgroud)
其中a,b,c和d是字符串值.那么如果我只想添加到d列呢?
任何帮助,将不胜感激.
我有一个数据表,想知道我是否可以选择某些列并在表格上输入数据.列列出如下
| col1 | col2 | col3 | col4 | col5 | col6 | col7 | col8 | col9 | col10 | col11 |
我想选择列col1,col2 col6,col7,col3.并在数据表中的行的网格视图中显示数据..当前我正在使用的代码在下面并且onmly选择某些数据.我不是从sql中选择数据,而是从另一个存储在数据表中的excel中选择数据..但是我也需要另一个区域中的其他列...这个数据被写入一个表中的单词
for (int i = 1; i < table.Rows.Count; i++)
{
for (int j = 0; j < table.Columns.Count; j++)
{
if (j == 0)
{
val = filteredData.Rows[row][col].ToString();
}
else
{
val = filteredData.Rows[row][col].ToString();
if (val == "-" || val == "")
{
val = filteredData.Rows[row][col].ToString();
}
else
{
val = Convert.ToString(Math.Round(Convert.ToDouble(filteredData.Rows[row][col]), MidpointRounding.AwayFromZero));
} …Run Code Online (Sandbox Code Playgroud) 我有一个DataTable看起来像下面;
| ID | ItemIndex | ItemValue
ce895bd9-9a92-44bd-8d79-986f991154a9 1 3
ae7d714e-a457-41a8-8bb4-b5a0471c3d2f 2 2
a774dff3-acc0-4f50-a211-a775e28dcae3 2 1
292bbd50-290b-4511-9e4e-2e74e3ebe273 3 2
ae7d714e-a457-41a8-8bb3-b5a0471c3d22 3 1
Run Code Online (Sandbox Code Playgroud)
我想首先对此表进行排序ItemIndex,然后按排序对表进行排序ItemValue.
我怎样才能做到这一点?
编辑:排序后,我想要我的表如下;
| ID | ItemIndex | ItemValue
ce895bd9-9a92-44bd-8d79-986f991154a9 1 3
a774dff3-acc0-4f50-a211-a775e28dcae3 2 1
ae7d714e-a457-41a8-8bb4-b5a0471c3d2f 2 2
ae7d714e-a457-41a8-8bb3-b5a0471c3d22 3 1
292bbd50-290b-4511-9e4e-2e74e3ebe273 3 2
Run Code Online (Sandbox Code Playgroud) 我如何保持左外连接(我认为它是左外连接但我不是100%确定)两个数据表具有以下表和条件,同时保留两个表中的所有列?
dtblLeft:
id col1 anotherColumn2
1 1 any2
2 1 any2
3 2 any2
4 3 any2
5 3 any2
6 3 any2
7 any2
Run Code Online (Sandbox Code Playgroud)
dtblRight:
col1 col2 anotherColumn1
1 Hi any1
2 Bye any1
3 Later any1
4 Never any1
Run Code Online (Sandbox Code Playgroud)
dtblJoined:
id col1 col2 anotherColumn1 anotherColumn2
1 1 Hi any1 any2
2 1 Hi any1 any2
3 2 Bye any1 any2
4 3 Later any1 any2
5 3 Later any1 any2
6 3 Later any1 any2
7 any2
Run Code Online (Sandbox Code Playgroud)
条件: …
我正在尝试设置数据表的列宽.我已经看了这个问题的答案如何在PrimeFaces 3.0中的ap:dataTable中设置ap:column的宽度?.
然而,我正在尝试做一些不同的事情.我只希望列与它显示的最宽元素一样宽.我的大部分数据都是文字.
例如,它不应该是这样的
----------------------------- | This is some text | -----------------------------
它看起来应该是这样的
--------------------- | This is some text | ---------------------
如果有多行,则coulmn应该与最宽的元素一样大.
我创建了一个数据表.它有3列Product_id,Product_name和Product_price
Datatable table= new DataTable("Product");
table.Columns.Add("Product_id", typeof(int));
table.Columns.Add("Product_name", typeof(string));
table.Columns.Add("Product_price", typeof(string));
table.Rows.Add(1, "abc", "100");
table.Rows.Add(2, "xyz", "200");
Run Code Online (Sandbox Code Playgroud)
现在我想通过索引找到并更新该行.
比如说
我想将Product_name列的值更改为具有Product_id列值的"cde" :2.
我有这种数据表:
Name | CategorieID | FullCategorie_ID
---- ------------- ----------------
A 1 12
B 1 13
C 5 14
D 3 15
E 6 16
Run Code Online (Sandbox Code Playgroud)
我想将列'NAME'的值保存在数组中,我使用它来获取行的值.例如,要获取第一行的值,我可以使用以下代码.
var stringArr =datatable1.Rows[0].ItemArray.Select(x => x.ToString()).ToArray();
Run Code Online (Sandbox Code Playgroud)
但我不知道如何获得第一列的所有值.