DataGridView行在验证时被清除

时间:2012-09-21 10:46:28

标签: c# .net datagridview

我有一个DataGridView,我需要运行一个CellValidating事件,以确保只从ComboBox中选择有效值。这是必需的,因为ComboBox包含用于显示类别的虚拟行,用户可以选择列在每个类别下面的字段。

虽然我的验证代码工作正常,但是有一个不受欢迎的副作用,即所有值都从正在验证的行中擦除。我已将事件处理程序中的代码删除到此,问题仍然存在:

private void dgvInformation_CellValidating(object sender, DataGridViewCellValidatingEventArgs e)
{
    DataGridView dgv = this.dgvInformation;    
    DataGridViewCell cell = dgv.Rows[e.RowIndex].Cells[e.ColumnIndex];
}

如果我删除

DataGridViewCell cell = dgv.Rows[e.RowIndex].Cells[e.ColumnIndex]; 

行然后问题不会发生。

DGV没有约束,我认为这是导致问题的原因。作为测试,我已经制作了一个简单的表单,并且未绑定的DGV值填充,每次CellValidating事件触发该行被清除,但是当我创建List<>时并使用它作为数据源,不会消除值。这可能是未绑定的DGV的错误吗?

非常感谢

1 个答案:

答案 0 :(得分:0)

我对sentense有问题:“确保只从ComboBox中选择有效值。”使用组合框实际上应该防止在文本框之类的控件中出现错误的值,为什么不在组合框中显示有效值,或者如果你需要验证组合框选择的组合,那么在完成所有的查询后验证,因此你可能需要一些东西比如提交按钮来运行验证例程。

如果您仍然认为必须在每次选择后验证组合框,那么您必须以某种方式在组合框的SelectionChanged事件上运行验证。