gpt4 book ai didi

c# - 当我在可编辑单元格中写入值时如何捕获 DataGridView 验证错误?

转载 作者:太空狗 更新时间:2023-10-29 23:08:07 24 4
gpt4 key购买 nike

我见过很多涉及数据绑定(bind)的解决方案,但我没有数据源。在这种情况下,组合单元格仅适用于 1 行(其他行没有 DataGridViewComboBoxCell)。

我像这样设置了一个 DataGridViewComboCell:

DataGridViewComboBoxCell cell = new DataGridViewComboBoxCell();
cell.DisplayStyle = DataGridViewComboBoxDisplayStyle.ComboBox;
cell.Items.AddRange(items.ToArray()); // items is List<string>

我稍后会像这样动态地重新填充它:

_cell.Items.Clear();
_cell.Items.AddRange(this.Data.ResponseOptions.Select( d => d.Description).ToArray());
//d.Description is of type string

但随后我得到了一个讨厌的对话框,上面写着:

The following exception occurred in the DataGridView: System.ArgumentException: DataGridViewComboBoxCell value is not valid. To replace this default dialog please handle the DataError event.

顺便说一下,说它不是“有效的”也没有多大帮助。向 MS 发送电子邮件说 Windows 窗体无效是否公平?

我已经尝试获取单元格的 items 属性并使用带有 Add() 调用的 foreach() 添加字符串。我仍然得到对话框。

每次我想更新它并从头开始重新创建一个新的 DataGridViewComboCell 时,我也尝试过吹掉整个单元格。我仍然得到对话框。

我也试过手动覆盖列值(当我没有这个问题时成功)。不过,我没有修复它。

我似乎只有在尝试重新填充组合单元格中的项目时才会收到此对话框。

现在我只是删除了 DataError 方法。

有什么建议吗?

最佳答案

这个问题有点老了,但我遇到了这个,结果 ThunderGR 绝对是对的。当我让 DataError 打印报告时,我开始查看数据库中的值,并注意到它们实际上全部大写。只需将我的字符串值更改为全部大写,就不会再收到错误。

这是一种可能处理 DataError 的方法,尽管我不想首先触发它。

    private void dataGridView_DataError(object sender, DataGridViewDataErrorEventArgs e)
{
try
{
if (e.Exception.Message == "DataGridViewComboBoxCell value is not valid.")
{
object value = dataGridView.Rows[e.RowIndex].Cells[e.ColumnIndex].Value;
if (!((DataGridViewComboBoxColumn)dataGridView.Columns[e.ColumnIndex]).Items.Contains(value))
{
((DataGridViewComboBoxColumn)dataGridView.Columns[e.ColumnIndex]).Items.Add(value);
}
}

throw e.Exception;
}
catch (Exception ex)
{
bool rethrow = ExceptionPolicy.HandleException(ex, "UI Policy");
if (rethrow)
{
MessageBox.Show(string.Format(@"Failed to bind ComboBox. "
+ "Please contact support with this message:"
+ "\n\n" + ex.Message));
}
}
}

这样,该值将被添加到项目集合中,但仍会在可以记录的地方抛出异常。我使用了消息框,因为我仍然认为用户遇到错误消息并联系支持人员修复它很重要。希望这对某人有帮助!

关于c# - 当我在可编辑单元格中写入值时如何捕获 DataGridView 验证错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19503306/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com