【问题标题】:Trouble with updating DataRow in C#在 C# 中更新 DataRow 时遇到问题
【发布时间】:2012-04-06 14:04:00
【问题描述】:

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

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

【问题讨论】:

    标签: c# datatable datarow


    【解决方案1】:

    您是否尝试过以下方法?

    
    ...
    dataGridView1.DataSource = null; // set it to null before it set to a new one.
    dataGridView1.DataSource = t;

    【讨论】:

    • 感谢您的回复,JotaBe先生的回答最终成为了神秘的解决方案......
    【解决方案2】:

    简单的改变:

    t.Rows[0].ItemArray[0] = "new value";
    

    t.Rows[0][0] = "new value";
    

    就是这样!

    编辑(添加说明):

    不跟踪对 ItemArray 元素的更改,因此数据表值中不会反映任何更改(原始问题中的代码)

    但是您可以使用 ItemArray 一次更改所有行,如下所示:

    t.Rows[0].ItemArray = new object[] {"new value"};
    

    在这种情况下,更改会被跟踪,并且您会得到预期的结果。

    【讨论】:

    • 老兄!!!!这完全有效!非常感谢!知道为什么 Rows[][] 有效但 Rows[].ItemArray[] 无效吗?
    【解决方案3】:

    回答你的问题

    你应该这样做

      t.Rows[0].ItemArray = new object[] { "new value" };
    

    根据 MSDN,

    您可以使用此属性通过 大批。如果使用此属性设置值,则数组必须具有 与列集合相同的大小和顺序。在 ItemArray 表示没有指定值。

    【讨论】:

      猜你喜欢
      • 2020-11-29
      • 2020-11-10
      • 2012-02-08
      • 2021-04-07
      • 1970-01-01
      • 1970-01-01
      • 2019-07-22
      • 1970-01-01
      • 2022-12-09
      相关资源
      最近更新 更多