验证Datagridview上的行

时间:2011-08-28 21:12:19

标签: c# datagridview

所以,我有这个显示整个表格的datagridview,因为我们都知道主要字段不能为空或重复,所以在将其保存到数据库之前我必须进行一些验证。

我设法让我的验证看到,如果我有一个现有的行,我将主键更改为“空”或重复值,它会锁定该单元格中的datagridview,直到我修复它。

当我添加一个新行时问题就出现了,如果我没有将datagridview聚焦在主键上,则单元验证事件不会触发,当我更新数据库时出现错误,因为datagrid接受我的空值。 / p>

这是我对行验证的尝试,但它不起作用,我希望你的帮助。我希望阻止该行,直到用户向我的主键提供适当的输入,该列在索引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;
        }
    }

1 个答案:

答案 0 :(得分:1)

只需确保PK列处于只读状态,并最终隐藏,以便用户不会对其进行编辑。

取决于您的数据访问层设计(用于加载和更新/插入数据的逻辑),您通常不能在插入时为PK字段传递任何值,数据库将为您生成一个值(如果是整数自动增量。)

如果仍有问题,请显示加载数据的方式,并将网格绑定到已加载的数据,以及将更改保存回数据库的方式。