1. 程式人生 > >datarow中BeginEdit和EndEdit

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回退值。