C#,DataGridView - 新行包含被选中后的垃圾

时间:2013-09-05 12:20:27

标签: c# mysql .net datagridview

我有一个包含一些列的数据网格:
CategoryID,SubcategoryID,SubcategoryName (隐形,隐形,可见)

创建新子类别时,需要使用CategoryID。

我正在从UI输入新的子类别名称。如果我按ENTER键,它结束当前行编辑,并选择下面的行,而不启动编辑模式(它只是突出显示)。此临时选择使我的SubcategoryName从默认的空单元格值 null 转换为 string.empty 值。

然后,当我尝试将数据发送回数据库时,会导致问题。 Data Adapter引发错误,说CategoryID不能为null。根据我的测试,这是由包含一些不可见垃圾的新行引起的。如果我编辑新行并输入一个普通的子类别名称,那么一切正常(通过检测SubcategoryName不为空的函数插入CategoryID)。

如何确保我的新行数据被删除?

我尝试使用 SendKeys.Send(“{ESC}”) DG_SubcategoryEdit.CancelEdit()

发送ESC键

1 个答案:

答案 0 :(得分:0)

经过一段时间尝试解决我发现的问题后,无论何时你想插入一些东西作为用户放置的内容,你应该总是使用 DefaultValuesNeeded 事件而不是 RowValidated 。如果未提交版本,DefaultValuesNeeded将正确处理删除行的剩余部分。如果您在 RowValidated 中插入任何内容,甚至是null,则该行将被视为已编辑,并将尝试将自身同步到数据库。

令人困惑的部分(可能还有一个错误)是包含null的“已编辑”行在DataGridView底部显示为新的空行,而不是常规的空行。因此,如果您尝试删除它,此行将引发错误,指出您无法删除新行。