我目前正在使用c#编写一个项目,但遇到了问题。我将简要介绍一下我的表格:
它在表单的下半部分有一个datagridview,有单行选择,并且是只读的。在表单的上半部分,我有各种组件,这些组件可以数据绑定到datagridview上的选定行。我之所以这样做,是因为数据库中的列太多而无法在datagridview中显示而不会严重混乱UI。这工作正常,格式和解析事件被正确调用。
我有一个Add New Record按钮,它将上半部分的控件重新绑定到一个新的数据行(它还不是数据表的一部分),这就是我遇到问题的地方。首先,当直接绑定到数据行时,控件似乎不像DBNull值那样满足于绑定到数据表时的控制。但是没关系,我只是在绑定它之前为新行分配了默认值。但是,由于某种原因,直接绑定到行时,似乎不会触发Format和Parse事件,而我无法理解为什么?我需要这些的主要原因是我有一个Date值列,理想情况下需要为null(从UI角度看是空白的)所以我将DateTime.MinValue指定为新行的默认值,然后我在格式上查找/解析事件并进行必要的转换。
我想我的主要问题是为什么绑定到数据行会引发DBNull异常,当绑定到同一列中具有相同空值的数据表时不会引发异常并且列约束具有“允许空值”。我的另一个问题是,当组件绑定到数据行时,为什么不触发Format / Parse事件?
答案 0 :(得分:1)
我有很多困难将datagridview欺负到提交中,并且在谷歌搜索之后要么提出黑客攻击或解决方法。我猜你的评论中你的列中的空值和导致异常的DBNull之间必定存在一些区别吗?
在这种情况下,您的一些源代码可能有助于进一步尝试帮助您。
(P.S。我知道这不仅仅是一个评论而不是一个答案,但我还不能添加评论,所以请不要为此投票,或至少解释原因)