我有一个DataGridView绑定到从BindingSource填充的database上。

即使我有一百万行,database字段“ UnitNumber”也始终是1到30之间的值-不是唯一的。

外键“ RelateID”的另一个相关字段基本上形成行的子集-只能具有唯一的UnitNumbers 1至30。

因此,在我代表单元号的DataGridViewColumn中-我希望它可以受Unique约束,因此,如果DataGridView中已经有单元号1至20,并且用户添加了一行,则输入-我不希望它们能够再次添加UnitNumber 14-与Column和Rows中已有的副本相同。

如何确保用户仅输入DataGridView列UnitNUmber中不存在的有效UnitNumber?

我已经读过有关在Unique ConstraintData Column上设置Bindingsource的操作,但由于这些列当前没有唯一值而失败,并且我知道该错误告诉我-它指的是基础数据源-如何我可以在我的DataGridViewColumn上强制一个约束而不在基础Data Source上强制一个约束吗?

我还阅读了有关单元验证事件的信息;但不确定是否是正确的位置,如果我使用属性更改的更新模式会出现问题,我认为单元验证的更新模式会起作用。

我应该使用哪种实现方式来完成对DataGridView column的唯一约束,而又不影响基础DataSource

最佳答案

没有自动的方法。您将必须处理网格的CellValidating事件,获取当前行的这些值的组合,然后循环遍历网格行以确定该组合是否已存在,否则将无法通过验证。通过验证失败,即将e.Cancel设置为True,可以防止用户在输入有效值之前离开该单元格。

08-07 14:56