DataTable Rowstate始终处于已添加状态

时间:2016-05-19 09:05:48

标签: c# winforms datagridview datatable

我有这些代码行

DataTable DTable = new DataTable();
DTable.Columns.Add("Domain");
DTable.Rows.Add("Sample");
DTable.AcceptChanges();
DGridView.DataSource = DomainTable;

此按钮用于保存更改

private void SaveDChangesButton_Click(object sender, EventArgs e)
        {
           foreach(DataRow dr in Dtable.Rows)
           {
               if(dr.RowState == DataRowState.Modified)
               {

               }
           }
        }

我的问题是,即使我修改了第一行,Rowstate也始终返回已添加

1 个答案:

答案 0 :(得分:0)

RowState是一个标志枚举,多个值可以打开。

始终使用HasFlag函数来测试值!所以改变这个:

   if(dr.RowState == DataRowState.Modified)
   {
         // do the saving stuff
   }

为此:

   if(dr.RowState.HasFlag(DataRowState.Modified) )
   {
         // do the saving stuff
   }

请注意,AddedModified上的AcceptChanges都不得被调用..:

  

已添加:该行已添加到DataRowCollection中,并且   AcceptChanges尚未被调用

     

修改:行已被修改且AcceptChanges尚未修改   调用。

如果您添加一行并让用户修改它(或在代码中执行此操作),则两个标记应 ,并且代码中的原始条件为<强>假尽管实际上已被修改了!

如果 为行或整个表调用AcceptChanges代码建议那么 标志都没有!