验证Datagridview上的行
本文关键字:Datagridview 验证 | 更新日期: 2023-09-27 18:07:05
所以,我有这个datagridview显示我的整个表,因为我们都知道主字段不能是空的或重复的,所以我必须做一些验证之前保存到数据库。
我已经设法使我的验证看到,如果我有一个现有的行,我改变主键为"空"或重复的值,它锁定在该单元格中的数据视图,直到我修复它。
问题来了,当我添加一个新的行,如果我不把datagridview集中在主键的单元格验证事件不触发,我得到一个错误,当我更新数据库,因为datagridview接受我的空值。
这是我在行验证的尝试,但它不工作,我希望你的帮助请。我希望该行被阻塞,直到用户为我的主键提供适当的输入,该列在索引5上被称为"LOOPS",但是我发布的代码只有在我踩到主键时才会触发锁定!
private void dataGridView2_RowValidating(object sender, DataGridViewCellCancelEventArgs e)
{
if (dataGridView2.Rows[e.RowIndex].Cells[5].ToString() == "")
{
dataGridView2.Rows[e.RowIndex].ErrorText = "El campo clave de la tabla (Loops) no puede estar en blanco";
e.Cancel = true;
}
}
只要确保PK列是只读的,并且最终是隐藏的,所以没有用户会编辑它。
根据您的数据访问层设计(您用于加载和更新/插入数据的逻辑),您通常可以在插入时不为PK字段传递任何值,数据库将为您生成一个值(如果它是一个自动递增的整数)。
如果你仍然有问题,显示你是如何加载数据和绑定网格到加载的数据,以及你是如何保存更改回数据库的