阻止DataGridView向BindingSource添加空行

时间:2016-05-19 10:22:35

标签: c# winforms datagridview

我有DataGridViewAllowUserToAddRows = true, EditMode = EditOnKeystrokeOrF2)绑定到BindingSource(绑定到DataTable)。 我的DataGridView有一个ComboBoxColumn我可以选择国家/地区。

DataGridView AllowUserToAddRows上有true,因为用户应该可以通过从每个DataGridView所拥有的空白“新行”中选择一个国家来添加行。

问题是每当我用鼠标点击空行时,它就会将新行添加到BindingSource。但是,在您实际从前一个(点击的)新行中选择一个国家/地区之前,DataGridView的新“空白”行不会显示。

因此,用户不知道他添加了新行。该行的DBNull.ValueCountry,因为未选择任何内容。尝试保存时,会抛出错误,因为Country不能为空。

因此,我需要阻止在从BindingSource中选择值之前将新行添加到ComboboxColumn

我尝试RowValidating - 在CountryDBNull时取消编辑的事件,但它阻止我离开新行。那不是我想要的。

基本上,我认为我有this问题,没有“结束表格”部分。

2 个答案:

答案 0 :(得分:1)

'空白'存在于数据网格视图中的行只是用于添加新行,它在数据源中不存在,直到您实际单击该行为止。一旦你编辑了那个新行'区域和移动行,datagridview将添加另一个'新行'区域。我的建议是在保存之前添加一些验证,并排除任何未通过验证的行。

答案 1 :(得分:0)

在调用我的保存方法(在public static final int DAYS_IN_WEEK = 7 private NumberDisplay day public String getCurrentDay() 上调用DataGridView)之前让Update失去焦点,使得空行从DataAdapter消失。