DataGridView列仅允许唯一值

时间:2016-06-30 04:18:24

标签: c# mysql vb.net datagridview

我有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 ConstraintData Column设置此{<1}}失败,这些列目前没有唯一值,我知道错误告诉我的是什么 - 它指的是底层数据源 - 如何在我的DataGridViewColumn上强制约束而不强制基础Bindingsource

我还读过关于细胞验证事件的内容;但不确定它是否是正确的地方,如果我使用属性更改更新模式将是一个问题,我认为Cell验证更新模式将起作用。

我应该使用什么实现来完成Data Source上的唯一约束,而不会影响基础DataGridView column

1 个答案:

答案 0 :(得分:1)

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