在C#中更新DataRow有问题

时间:2012-03-22 00:54:09

标签: c# datatable datarow

我有一个非常简单的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"

任何帮助将不胜感激!谢谢!

3 个答案:

答案 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;