我有一个非常简单的C#DataTable问题,我似乎无法解决这个问题;它看起来如此紧张,但我必须遗漏一些东西。
我希望有人可以向我解释为什么我无法更新DataTable中的单元格值,如下所示:
代码:
DataTable t = new DataTable();
t.Columns.Add("MyCol");
t.Rows.Add("old value");
t.Rows[0].ItemArray[0] = "new value";
t.AcceptChanges();
dataGridView1.DataSource = t; //did not work. still reads "old value"
任何帮助将不胜感激!谢谢!
答案 0 :(得分:5)
简单地改变:
t.Rows[0].ItemArray[0] = "new value";
到
t.Rows[0][0] = "new value";
就是这样!
编辑(补充解释):不会跟踪对ItemArray元素的更改,因此数据表值(原始问题中的代码)中不会反映任何更改
但是,您可以使用ItemArray一次更改所有行,如下所示:
t.Rows[0].ItemArray = new object[] {"new value"};
在这种情况下,会跟踪更改,并获得预期结果。
答案 1 :(得分:1)
回答你的问题
你应该这样做
t.Rows[0].ItemArray = new object[] { "new value" };
根据MSDN,
您可以使用此属性通过a设置或获取此行的值 阵列。如果使用此属性设置值,则数组必须具有 与列集合相同的大小和顺序。在。中传递null ItemArray表示未指定任何值。
答案 2 :(得分:0)
您是否尝试过以下操作?
...
dataGridView1.DataSource = null; // set it to null before it set to a new one.
dataGridView1.DataSource = t;