当TextBox值更改时立即更新DataGridView数据源

时间:2011-06-27 11:03:04

标签: datagridview

我有一个简单的DataGridView绑定到业务对象列表(每个对象只有一个可编辑字段)。我需要用户对值(在DataGridViewTextBoxColumn中)进行任何更改以更新绑定对象。也就是说,以与绑定普通文本框和使用“OnPropertyChanged”选项时相同的方式更新每个按键。

原因是我只需要在绑定对象的'IsDirty'属性为true时启用表单上的'确定'按钮。

关于为复选框列执行此操作并使用CurrentCellDirtyStateChanged事件并调用CommitEdit,各种网站上似乎有很多讨论。我试过这个,但这有一个不幸的副作用,就是在第一个按键上清除所有文本的单元格!

非常感谢任何帮助,谢谢。

1 个答案:

答案 0 :(得分:0)

听起来你想要的是在用户开始输入任何单元格时立即启用按钮?在单击按钮之前是否确实需要更新DataSource

如果没有,那么CurrentCellDirtyStateChanged应该可以正常工作 - 只需不要调用CommitEdit方法,而是将按钮设置为启用。

当单元格失去焦点时,更改将应用​​于DataSource - 因此,当单击该按钮时,您将能够处理正确的数据。


我想我可能已经找到了解决方案 - 不是100%肯定,因为我没有MVC控制器你必须连接IsDirty更改并看到它全部工作 - 我确实在属性设置器上设置了一个断点

,我的DataSource对象会被以下代码触发而不是没有它,所以我认为这样做了。

它只是将DataCellDirtyStateChanged和CurrentCellChange枚举用于DataErrorContext参数。

void dataGridView1_CurrentCellDirtyStateChanged(object sender, EventArgs e)
{
    dataGridView1.CommitEdit(DataGridViewDataErrorContexts.CurrentCellChange);
}