dTable在修改后是不是已经update到数据库或者执行了AcceptChange的方法?

解决方案 »

  1.   

    应该没有取值的源码如下DataTable dTable = (DataTable)dataGridView1.DataSource;
                DataRow[] modified1, modified2;
                List<string> tableNamesCurrents = new List<string>();
                List<string> tableNamesOriginals = new List<string>();
                switch (_TableNameEN.ToLower())
                {
                    case "sys_table":
                        modified1 = dTable.Select(null, null, DataViewRowState.ModifiedCurrent);
                        foreach (DataRow dr in modified1)
                        {
                            tableNamesCurrents.Add(dr["TableNameEN"].ToString());
                        }
                       
                        modified2 = dTable.Select(null, null, DataViewRowState.ModifiedOriginal);
                        foreach (DataRow dr in modified2)
                        {
                            tableNamesOriginals.Add(dr["TableNameEN"].ToString());
                        }
                        break;
                }
      

  2.   

    DataTable.Select返回的是DataRow的集合,而DataRow实际上已经包括了新旧的数据。
    DataTable table = new DataTable();
    table.Columns.Add("value", typeof(int));
    table.Rows.Add(1);
    table.AcceptChanges();
    table.Rows[0]["value"] = 2;DataRow modifiedRow = table.Select(null, null, DataViewRowState.ModifiedOriginal)[0];
    int oldValue = modifiedRow.Field<int>("value", DataRowVersion.Original);  // 1
    int newValue = modifiedRow.Field<int>("value", DataRowVersion.Current);   // 2// 如果只要一个版本,可以用DataView
    DataRowView rowView = new DataView(table, null, null, DataViewRowState.ModifiedOriginal)[0];
    int original = (int)rowView["value"]; // 1
      

  3.   


    不好意思
    错误 2 “System.Data.DataRow”不包含“Field”的定义,并且找不到可接受类型为“System.Data.DataRow”的第一个参数的扩展方法“Field”(是否缺少 using 指令或程序集引用?) 如何支持.Field<int>??
      

  4.   

    int oldValue = (int)modifiedRow["value", DataRowVersion.Original];