datatable相关用法

   一、datatable自己构建以及构造数据,先创建列,然后创建行,并写入数据

  DataTable dt = new DataTable();               

  dt.Columns.Add("UserId");               

  dt.Columns.Add("UserName");

  for (int i = 0; i < 10; i++) {                  

       var row = dt.NewRow();                  

       string uname="UserName";                   

       row["UserId"] = i.ToString();                   

       row[uname] = "test" + i;                   

       dt.Rows.Add(row);

}

二、dt.RejectChanges(); dt.AcceptChanges();  dt.GetChanges();  三个函数的含义及相关用法

DataTable 中的每个DataRow中都有DataRowState记录每行状态。此状态在DataTable中已经封装好。以下为DataRowState 不中状态值
    

    // 摘要:
        //     该行已被创建,但不属于任何 System.Data.DataRowCollection。System.Data.DataRow 在以下情况下立即处于此状态:创建之后添加到集合中之前;或从集合中移除之后。
        Detached = 1,
        //
        // 摘要:
        //     该行自上次调用 System.Data.DataRow.AcceptChanges() 以来尚未更改。
        Unchanged = 2,
        //
        // 摘要:
        //     该行已添加到 System.Data.DataRowCollection 中,System.Data.DataRow.AcceptChanges()
        //     尚未调用。
        Added = 4,
        //
        // 摘要:
        //     该行已通过 System.Data.DataRow 的 System.Data.DataRow.Delete() 方法被删除。
        Deleted = 8,
        //
        // 摘要:
        //     该行已被修改,System.Data.DataRow.AcceptChanges() 尚未调用。
        Modified = 16,

dt.RejectChanges() 此函数表示 “回滚”,主要用在处理异常中。修改DataRowState为运行前的状态

dt.AcceptChanges() 此函数表示“更新状态”, 例如:插入一条数据,获取最新数据,将当前状态改为默认初始状态

dt.GetChanges() 此函数表示“发生改变的数据”,此函数将返回发生改变的数据,如果没有任何改变,则返回null;

注意:

当在使用GetChanges()时,文本发生改变时,不能获取改变值。

原因:当前编辑文本没有失去焦点,不能立即获取更新的数据。

解决办法:

gvRight.CloseEditor();
gvRight.UpdateCurrentRow();
var data = m_DataSource.GetChanges();
gvRight.ShowEditor();

原文地址:https://www.cnblogs.com/chmblog/p/6029090.html