1

Postgres から返される にDataGridViewバインドされるを作成しました。DataTable

dgOrderLines.DataSource = Program.DB.GetView(view);

私はイベントを実装しCellEndEditました:

dgOrderLines.CellEndEdit += 
        new DataGridViewCellEventHandler(dgOrderLines_CellEndEdit);

ここで、フィールドの編集を開始すると、グリッドは自動的に「新しいレコード」をビューに移動し、編集したレコードが保存された場合に使用できます。

ここに画像の説明を入力

ただし、から「新しいレコード」を更新するとCellClick、ユーザーがクリックしてDataGridViewButtonColumnも追加されません。

ここに画像の説明を入力

DataGridはバインドされているため、手で追加することはできません。

セルを編集するためのコード:

    void dgOrderLines_CellEndEdit(object sender, DataGridViewCellEventArgs e) {
        // Get the edited cell
        DataGridViewCell cell = dgOrderLines.Rows[e.RowIndex].Cells[e.ColumnIndex];
        string column_name = dgOrderLines.Columns[e.ColumnIndex].Name;
        if (cell.Value != null) {
            UpdateField(e.RowIndex, column_name, cell.Value.ToString());
        }
    }

ボタンの使用時に行を更新するには、次のようにします。

    private void dgOrderLines_CellClick(object sender, DataGridViewCellEventArgs e) {
        if (dgOrderLines.Columns[e.ColumnIndex].CellType.
                           Name.Equals("DataGridViewButtonCell")) {

            // art.SelectedArticles[0] holds the articleid for this record
            UpdateField(e.RowIndex, "articleid", "1234");
        }
    }
4

1 に答える 1

0

見つけた。

どうやら、TextBoxセルで編集を開始すると、何かを入力するとすぐにセルが「ダーティ」とマークされます。だから、私がしなければならなかったのは、自分のButton細胞を汚すことだけでした。そしてもちろん、StackOverflow はすぐに私を助けてくれました。

私がしなければならなかったのは:

myGrid.NotifyCurrentCellDirty(false);

編集を始める前に (on CellClick)

myGrid.NotifyCurrentCellDirty(true);

Button列にデータを書き込んだ後。

于 2013-07-10T08:58:01.473 に答える