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

C#如何更改数据表中的数据?,c#,datatable,C#,Datatable,我遇到了一些问题,我使用DataTable在dataGridView中存储数据。 数据输入方式如下: 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+

我遇到了一些问题,我使用DataTable在dataGridView中存储数据。 数据输入方式如下:

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代表我想要的行,所以没问题,但我仍然不能做任何更改,有什么问题吗?如何更新数据表???我在谷歌上搜索,什么也没有:(

dt.Rows[1]。ItemArray
会给你一个item Array的副本。当你修改它时,你并没有修改原始的

您可以简单地执行以下操作:

dt.Rows[1][3] = "Value";
要修改所有行值时,将使用ItemArray属性

例:


尝试设置字段方法:

表.行[i].设置字段(列,值);

表.行[i].设置字段(列索引,值);

table.Rows[i].SetField(columnName,value);


这应该可以完成任务,并且比使用行[i][j]更“干净”。

您可能应该设置属性
dt.Columns[“columnName]”。ReadOnly=false;
之前。

应该是dt.Columns[n].ReadOnly+1-我同意,您的建议比使用数组的示例更清晰。您的示例允许通过名称而不是通过数组中的位置来明确标识字段。我认为使用数组既便宜又懒惰。这无疑会在将来的维护过程中增加出错的风险。此外,如果数据表objECT是从数据库结构派生的,如果要改变数据库结构,例如在表定义中间插入列,则使用数组方法可能会产生运行时错误或更糟的未检测到的损坏数据。
dt.Rows[1].ItemArray = newItemArray;