1

我创建了一个DataGridView绑定到DataTablePostgres 返回的 a :

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 回答