我有一个DataGridView
绑定到从BindingSource
填充的database
上。
即使我有一百万行,database
字段“ UnitNumber”也始终是1到30之间的值-不是唯一的。
外键“ RelateID”的另一个相关字段基本上形成行的子集-只能具有唯一的UnitNumbers 1至30。
因此,在我代表单元号的DataGridViewColumn
中-我希望它可以受Unique
约束,因此,如果DataGridView
中已经有单元号1至20,并且用户添加了一行,则输入-我不希望它们能够再次添加UnitNumber 14-与Column和Rows中已有的副本相同。
如何确保用户仅输入DataGridView
列UnitNUmber中不存在的有效UnitNumber?
我已经读过有关在Unique Constraint
的Data Column
上设置Bindingsource
的操作,但由于这些列当前没有唯一值而失败,并且我知道该错误告诉我-它指的是基础数据源-如何我可以在我的DataGridViewColumn上强制一个约束而不在基础Data Source
上强制一个约束吗?
我还阅读了有关单元验证事件的信息;但不确定是否是正确的位置,如果我使用属性更改的更新模式会出现问题,我认为单元验证的更新模式会起作用。
我应该使用哪种实现方式来完成对DataGridView column
的唯一约束,而又不影响基础DataSource
。
最佳答案
没有自动的方法。您将必须处理网格的CellValidating
事件,获取当前行的这些值的组合,然后循环遍历网格行以确定该组合是否已存在,否则将无法通过验证。通过验证失败,即将e.Cancel
设置为True
,可以防止用户在输入有效值之前离开该单元格。