[英]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.