3

我目前正在 c# 下编写一个项目并且遇到问题。我将简要描述我的表格:

它在表单的下半部分有一个带有单行选择的datagridview,并且是只读的。在表单的上半部分,我有各种组件,这些组件数据绑定到 datagridview 上的选定行。我这样做是因为数据库中的列太多,无法在 datagridview 中显示而不会严重弄乱 UI。这工作正常,格式和解析事件被正确调用。

我有一个添加新记录按钮,它将上半部分的控件重新绑定到一个新的数据行(它还不是数据表的一部分),这就是我遇到问题的地方。首先,当直接绑定到数据行时,控件似乎不像绑定到数据表时那样对 DBNull 值满意。但这很好,我只是在绑定之前为新行分配了默认值。但是,由于某种原因,当直接绑定到一行时,似乎没有触发 Format 和 Parse 事件,我不知道为什么?我需要这些的主要原因是我有一个日期值列,理想情况下它需要为空(从 UI 角度来看是空白),所以我将 DateTime.MinValue 分配为新行的默认值,然后我在格式上查找它/ 解析事件并进行必要的转换。

我想我的主要问题是为什么绑定到数据行会引发 DBNull 异常,当绑定到同一列中具有相同空值的数据表时不会引发异常并且列约束具有“允许空值”。我的另一个问题是,当组件绑定到数据行时,为什么不触发 Format / Parse 事件?

4

1 回答 1

1

我在欺负 datagridview 提交时遇到了很多困难,经过一番谷歌搜索后,我想出了一个 hack 或解决方法。我从您的评论中猜测,您的列中的空值与导致异常的 DBNull 之间一定存在一些差异?

在这种情况下,您的一些源代码可能会帮助您进一步尝试并帮助您。

(PS 我知道这更像是一个评论而不是一个答案,但我还不能添加评论,所以请不要投票给我,或者至少解释原因)

于 2011-07-25T09:54:50.293 回答