日期:2014-05-17  浏览次数:20916 次

请问,ADO.NET中的行版本
http://msdn.microsoft.com/zh-cn/library/system.data.datarowversion(v=vs.100).aspx

链接中的MSDN有这么一句话:“在调用 DataRow 对象的 EndEdit 方法之后,Proposed 值变成 Current 值。”

看下面的代码:

DataTable datatable = new DataTable();
datatable.Columns.Add("姓名", typeof(string));  
DataRow dr = datatable.NewRow();  
dr["姓名"] = "汤姆";
datatable.Rows.Add(dr);
dr.BeginEdit(); //进入编辑模式
dr["姓名"] = "熊俊";
datatable.EndInit(); //终止编辑模式
Console.WriteLine(datatable.Rows[0]["姓名", DataRowVersion.Current]); //输出当前值为:汤姆
Console.WriteLine(datatable.Rows[0]["姓名", DataRowVersion.Proposed]); //输出建议值为:熊俊

我调用了EndInit方法,为什么输出的当前值和建议值不一样呢?



------解决方案--------------------
“在调用 DataRow 对象的 EndEdit 方法之后“
你用的是EndInit
------解决方案--------------------
因为你写错了
不是datatable.EndInit
是dr.endedit
------解决方案--------------------
另外,调用了dr.endedit后datatable.Rows[0]["姓名", DataRowVersion.Proposed]也不存在了