1. 程式人生 > >DataGridView的編輯撤銷與資料表回滾的表現

DataGridView的編輯撤銷與資料表回滾的表現

1.編輯撤銷:當DataGridView單元格處於編輯狀態時,取消當前對所有單元格進行的編輯修改。

        private void 撤銷更改()
        { if (DataGridView.Focused)DataGridView.CancelEdit(); }

2.資料表回滾的表現:當DataGridView與BindingNavigator結合使用時,當點選[刪除]按鈕後DataGridView中將立即消失選定這一行資料,顯示的資料條數同時減少,這時,雖然繫結的資料表尚未提交更新到資料庫,且資料表中資料條數也未曾減少,但不是採用重新繫結資料表的方式來恢復被刪除的行在DataGridView的可見,而是,採用資料表回滾來實現取消刪除的行在DataGridView中的立即可見。

if (System.Windows.Forms.MessageBox.Show("確認要刪除該行資料並儲存所有資料嗎?", "刪除確認", MessageBoxButtons.OKCancel, 
MessageBoxIcon.Question) == DialogResult.Cancel)
    資料表.Tables["總列表"].RejectChanges();

3.資料表更改的有效提交:非新增操作有效性,如果在之上的資料表回滾程式碼前加入程式碼AcceptChanges()如下:

if (System.Windows.Forms.MessageBox.Show("確認要刪除該行資料並儲存所有資料嗎?", "刪除確認", MessageBoxButtons.OKCancel, 
MessageBoxIcon.Question) == DialogResult.Cancel)
{
    資料表.Tables["總列表"].AcceptChanges();
    資料表.Tables["總列表"].RejectChanges();
}

這時如果刪除一行資料,則回滾無效,而提交資料表更改是有效的。那麼,提交資料表更改何時無效?假如在資料表中新增一行資料後又立即刪除這行新增資料,這時無論執行以上程式碼或是單獨執行回滾程式碼,回滾皆無效的,那麼,提交資料表更改就是無效的。

提交更改有效性這點說明至少目前是這樣認為的,在DataGridView中新增多條記錄且未更改的資料庫之前時,不小心點選到了刪除按鈕,這時雖用提交和回滾執行亦無法解決。