我有DataGridView
绑定到BindingSource
填充的database
。
database
字段“UnitNumber”将始终为1到30之间的值,即使我有一百万行 - 不是唯一的。
另一个相关字段外键“RelateID”基本上构成了行的子集 - 只能有1到30个唯一的UnitNumbers。
所以在我的DataGridViewColumn
代表 UnitNumber - 我希望它可能是Unique
约束所以输入换句话说,如果我在{{1}中有1到20的UnitNumbers已经和用户添加了一行 - 我不希望他们能够再次添加UnitNumber 14 - 与已经在列和行中的内容重复。
如何确保用户只输入DataGridView
列 UnitNUmber 中尚不存在的有效 UnitNumber ?
我已阅读有关在DataGridView
Unique Constraint
上Data Column
设置此{<1}}失败,这些列目前没有唯一值,我知道错误告诉我的是什么 - 它指的是底层数据源 - 如何在我的DataGridViewColumn上强制约束而不强制基础Bindingsource
?
我还读过关于细胞验证事件的内容;但不确定它是否是正确的地方,如果我使用属性更改更新模式将是一个问题,我认为Cell验证更新模式将起作用。
我应该使用什么实现来完成Data Source
上的唯一约束,而不会影响基础DataGridView column
。
答案 0 :(得分:1)
没有自动的方法。您必须处理网格的CellValidating
事件,获取当前行的这些值的组合,然后遍历网格行以确定该组合是否已存在,如果存在则验证失败。如果验证失败,即将e.Cancel
设置为True
,则会阻止用户离开该单元格,直到他们输入有效值。