[小菜一碟] Windows Forms 的 DataGridViewComboBoxColumn 選項變更後立即更新到 DataSource

Windows Forms 的 DataGridView 開啟編輯資料之後,我們就可以在畫面上直接對資料進行修改,預設的統一操作行為是修改完資料之後,按下 Enter 鍵或是離開該儲存格,資料就會更新到綁定的 DataSource 上,就像下面這樣:

但是呢,使用者會希望能在修改之後立即更新到 DataSource,不要再多敲 Enter 鍵或離開儲存格的動作,尤其是 ComboBox,我們來看一下怎麼弄?

從資料修改到更新至 DataSource 的中間,儲存格會有一個 Dirty 的狀態,意謂著資料已被修改,但是尚未更新到 DataSource 去,我們只要掌握到儲存格 Dirty 狀態的變更時機,在 Dirty 狀態變更的當下,立即用程式的方式更新 DataSource,就達到了使用者要的需求了。

在 DataGridView 有一個 CurrentCellDirtyStateChanged 事件,它會在儲存格 Dirty 狀態變更的時候發出這個事件,我們只要在裡面做攔截就行了。

this.dataGridView1.CurrentCellDirtyStateChanged += (sender, e) =>
    {
        var dataGridView = (DataGridView)sender;

        if (dataGridView.IsCurrentCellDirty)
        {
            dataGridView.EndEdit();
        }
    };

參考資料

C# 指南 ASP.NET 教學 ASP.NET MVC 指引
Azure SQL Database 教學 SQL Server 教學 Xamarin.Forms 教學