datarow中BeginEdit和EndEdit
阿新 • • 發佈:2018-12-08
今天在專案中發現以前的程式碼有用到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回退值。
總結: BeginEdit... EndEdit相當於程式中的事物, BeginEdit相當於開啟事物, EndEdit相當於結束事物, CancelEdit為回退事物,如果直接修改值,則 CancelEdit不起作用。 CancelEdit只在 BeginEdit...後, EndEdit前才能回退修改的值;還發現重要的一點,就是在 BeginEdit之後修改記錄,記錄狀態不變,只有執行