C#如何更改DataTable中的数据?
问题描述:
我遇到了一些问题,我使用DataTable将数据存储在dataGridView中。 数据被inputed这样的:C#如何更改DataTable中的数据?
dt = new DataTable();
dt.Columns.Add("ID", typeof(int));
dt.Columns.Add("par", typeof(string));
dt.Columns.Add("max", typeof(int));
dt.Columns.Add("now", typeof(int));
dt.Rows.Add(new object[] { id++,i + " " + j++, strarr[0], strarr[1] }); // ... etc etc
dataGridView1.DataSource = dt;
现在我想要做一些改变,我用代码:
dt.Rows[1].ItemArray[3] = "VALUE";
当我调试,ItemArray代表我要行,所以它的好,但我仍然无法做任何改变,最新的错误?如何更新DataTable?我在谷歌上搜索并没有什么:(
答
dt.Rows[1].ItemArray
给你项目阵列的副本当你修改它,你没有修改原始
你可以简单地这样做:。
dt.Rows[1][3] = "Value";
当您要修改所有行值
ItemArray属性使用。
例:
dt.Rows[1].ItemArray = newItemArray;
答
尝试SetField方法:
table.Rows[i].SetField(column, value);
table.Rows[i].SetField(columnIndex, value);
table.Rows[i].SetField(columnName, value);
这应该完成这项工作,是有点 “干净” 比使用行[i] [j]。
答
您应该先设置属性dt.Columns["columnName"].ReadOnly = false;
。
+2
应该是dt.columns [n] .ReadOnly – 2013-09-18 19:32:38
+1 - 我同意,你的建议比使用数组的例子要干净得多。您的示例允许按名称清楚地标识字段,而不是按阵列中字段的位置。我认为数组的使用很便宜而且很懒惰。这在未来的维护中肯定会增加错误的风险。另外,如果数据表对象是从数据库结构派生的,并且如果该数据库结构要更改(例如在表定义的中间插入一列),则使用数组方法可能会产生运行时错误或更糟 - 未检测到损坏的数据。 – barrypicker 2014-10-31 17:11:54