繁体   English   中英

在DataGridView中完成添加行

[英]Complete Adding Row in DataGridView

我敢肯定对此有一个简单的答案,但对于我的一生,我看不到:

我有一个绑定到DataTable的DataGridView。 其中一个单元格可以包含相当长的字符串,因此我创建了一个编辑器对话框窗口(它也进行了一些验证等),该窗口在DataGridView的CellDoubleClick上打开。 当用户在编辑器对话框上单击“确定”时,该值将被放入单元格中。

只要它是已经添加到DataGridView的单元格,它就可以正常工作,但是如果我在“添加新行”(其中DataGridViewRow.IsNewRow为true)上进行操作,那么在关闭对话框时,我会遇到双重问题除非该行处于编辑模式并且随后无法添加新行,否则不会显示已编辑的字符串。

我可以看到的一个潜在解决方案是,确保在打开对话框窗口之前将新行添加到基础源中,但是我看不到一种完美的方法(DataGridView.EndEdit()不能这样做)。 那么,有没有一种整洁的方法可以做到这一点(或者完全有更好的解决方案)?

代码如下所示:

void DataGridViewCellCoubleClick(object sender, DataGridViewCellEventArgs e){
    DataGridView gridview = (DataGridView)sender;
    gridview.EndEdit();
    EditForm editForm = new EditForm(gridview.Rows[e.RowIndex].Cells[e.ColumnIndex].Value.ToString());

    if(editForm.ShowDialog() == DialogResult.OK){
        gridview.Rows[e.RowIndex].Cells[e.ColumnIndex].Value = editForm.StringResult;
    }

}

编辑:

我找到了可以满足我要求的解决方案:

致电之前:

DataGridView.EndEdit()

我还检查当前行是否为“ IsNewRow”,如果使用

DataGridView.NotifyCurrentCellDirty(true)

在我打开编辑窗口之前添加了它。 希望能对某人有所帮助。

我认为问题在于将数据表绑定到数据GridView的方式。

我将创建一个绑定源并将其Datasource设置为DataTable。 然后,我会将您的Datagrid视图的数据源设置为绑定源。

在Datagrid视图中添加新行时,请在数据表中创建新行,然后刷新数据表。

这些更改都应在Datagrid视图中反映出来,因为它们都受Binding源绑定。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM