0

データベースにブール変数のチェックボックス列を含む DataGridView があります。

このチェックボックスをクリックすると、以下のイベントが発生します。

uiPersonGridView_CellValueChanged イベント内で、DataGridView のデータソースである Persons Data Table の Data Table Adapter Update メソッドを呼び出します。

更新は 2 回目は正常に機能しますが、それでも現在の行のデータは更新されませんか?

たとえば、2 つの行がある場合、最初の行のチェック ボックスをオンにすると、Update は、int i に対して更新された 0 行を返し、データベースをチェックしましたが、何も変更されていません。しかし、2 番目の行のチェック ボックスをオンにすると、Update は int i に対して更新された 1 行を返します。

最初の変更とその後の変更に対して更新が機能するようにするにはどうすればよいですか?

    private void uiPersonGridView_CurrentCellDirtyStateChanged(object sender, EventArgs e)
    {
        if (uiPersonGridView.IsCurrentCellDirty)
        {
            uiPersonGridView.CommitEdit(DataGridViewDataErrorContexts.Commit);
        }
    }

    private void uiPersonGridView_CellValueChanged(object sender, DataGridViewCellEventArgs e)
    {
        if (uiPersonGridView.DataSource == null)
            return;

        if (e.RowIndex == -1)
            return;

        int i = _personAdapter.Update(_person);
    }
4

1 に答える 1