DataGridViewComboBoxColumn 的问题 - 在 DataError 事件触发之前捕获数据错误
Posted
技术标签:
【中文标题】DataGridViewComboBoxColumn 的问题 - 在 DataError 事件触发之前捕获数据错误【英文标题】:Issue With DataGridViewComboBoxColumn - Catching Data Errors before DataError event triggers 【发布时间】:2013-06-24 07:58:30 【问题描述】:我有一个 datagridview,其中包含一个 datagridviewcombobox 列。绑定到数据网格的数据对象包含一个属性,其值映射到绑定到组合框列的数据源值。
我的问题是偶尔会从数据库中检索到错误数据,因此当数据网格尝试将属性值转换为有效的组合框列值时,它会引发数据错误。我也无法在属性的 SET 方法中捕捉到这一点,因为它似乎在分配数据源时,它不会自动调用 SET 方法。
在引发数据错误之前,我可以使用一个事件来捕获它吗?或者您能想到的任何其他此类解决方法?
【问题讨论】:
在 DataError 事件触发之前不是调用 DataBindingComplete 吗?我认为您可以在分配 DataSource 时更正您的数据。不过我不确定。 【参考方案1】:我认为最好的方法是过滤无效数据或纠正它,因为即使你处理它也意味着会有一些不稳定。最好的方法是自己处理DataError
它自己可以修复/静音错误(我不确定你是否打算不处理该事件或在它之前发生 - AFAIK 这是DataBinding
场景中的最佳位置):
private void dgv_DataError(object sender, DataGridViewDataErrorEventArgs e)
e.ThrowException = false;
【讨论】:
我得到的异常是“DataGridViewComboBoxCell 值无效”.....我想要做的是将此错误值转换为有效值,如果可能的话,否则只需分配一个空字符串,这是我的组合框数据源中的有效值)。使用 DataError 事件执行此操作的问题是,我只希望在此错误来自我网格中的此组合框的特定情况下尝试此转换:我可以找出哪个列/值引发了错误吗?如果是这样,我可以检查此列是否引发错误,转换值,并将 e.throwexception 设置为 false 并继续? 我现在能想出的唯一方法是不使用 dataginding 并创建自己的数据插入/更新和验证方法。以上是关于DataGridViewComboBoxColumn 的问题 - 在 DataError 事件触发之前捕获数据错误的主要内容,如果未能解决你的问题,请参考以下文章