datarow中BeginEdit和EndEdit

今天在项目中发现以前的代码有用到BeginEdit和EndEdit,一直不大清楚具体作用。今天我就做了个实例测试了下应用效果;
下面是主要的测试代码,
DataRow dr = txtIsShowDs.Tables["TableOne"].Rows[0];
dr.BeginEdit();//1
dr["age"]="123";//2
dr.CancelEdit();//3
dr.EndEdit();//4
1》首先我只运行2代码, age的值变为123,之后执行3代码,age的值仍然为123
2》首先我执行1、2代码,age的值变为123( 注:这个时候dr的状态仍然为unchanged状态,只有执行EndEdit之后才变为modified状态),之后执行3代码,age的值被回退到了之前的值
3》首先我执行1、2、4代码,age的值变为123,之后我执行3代码,age的值任然为123

总结: BeginEdit... EndEdit相当于程序中的事物, BeginEdit相当于开启事物, EndEdit相当于结束事物, CancelEdit为回退事物,如果直接修改值,则 CancelEdit不起作用。 CancelEdit只在 BeginEdit...后, EndEdit前才能回退修改的值;还发现重要的一点,就是在 BeginEdit之后修改记录,记录状态不变,只有执行EndEdit后记录状态才发生相应的变化,这也许就是前面讲的binding控件改变数据源,记录状态不发生改变的原因 EndCurrentEdit(EndEdit )、 CancelCurrentEdit(CancelEdit ),当用绑定控件修改值的时候相当于开启事物,在调用 EndCurrentEdit方法之前可用 CancelCurrentEdit回退值。

猜你喜欢

转载自blog.csdn.net/c472769019/article/details/80773465
今日推荐