C#如何更改DataTable中的数据?

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]。

+0

+1 - 我同意,你的建议比使用数组的例子要干净得多。您的示例允许按名称清楚地标识字段,而不是按阵列中字段的位置。我认为数组的使用很便宜而且很懒惰。这在未来的维护中肯定会增加错误的风险。另外,如果数据表对象是从数据库结构派生的,并且如果该数据库结构要更改(例如在表定义的中间插入一列),则使用数组方法可能会产生运行时错误或更糟 - 未检测到损坏的数据。 – barrypicker 2014-10-31 17:11:54

您应该先设置属性dt.Columns["columnName"].ReadOnly = false;

+2

应该是dt.columns [n] .ReadOnly – 2013-09-18 19:32:38