我想检查数据gridview中输入的值是否已经存在?

时间:2014-12-10 06:45:08

标签: c# gridview datagridview

我正在尝试验证我的datagridview。当我将一些数据添加到一行,如果我在另一行输入一些数据,那么它应该显示一条消息。 我正在尝试以下代码。抛出null异常错误。 由于特定单元格中的值为null。 它无法获取值。

private void dataGridViewBrandDetails_CellLeave(object sender, DataGridViewCellEventArgs e)
    {
                    if (e.ColumnIndex == 0 && e.RowIndex > -1)
        {
        var dgv = sender as DataGridView;
   for (int i = 0; i < dataGridViewBrandDetails.Rows.Count; i++)
       {


            string s = dgv[e.ColumnIndex, e.RowIndex].Value.ToString();

           if (dataGridViewBrandDetails.Rows[i].Cells[0].Value != null && dataGridViewBrandDetails.Rows[e.RowIndex].Cells[0].Value.ToString() == dataGridViewBrandDetails.Rows[i].Cells[0].Value.ToString())
            {

                MessageBox.Show("The value already existed in DataGridView.");


            }

        }   

        }

    } 

1 个答案:

答案 0 :(得分:0)

改变一些事情:

private void dataGridViewBrandDetails_CellLeave(object sender, DataGridViewCellEventArgs e)
    {
        if (e.ColumnIndex == 0 && e.RowIndex > -1)
        {
        var dgv = sender as DataGridView;
        string s = dgv.Rows[e.RowIndex].Cells[e.ColumnIndex].Value.ToString();
        for (int i = 0; i < dataGridViewBrandDetails.Rows.Count; i++)
        {
           if(i!=e.RowIndex) // To skip the row with newly inserted value
           {
               if (dataGridViewBrandDetails.Rows[i].Cells[0] != null && dataGridViewBrandDetails.Rows[i].Cells[0].Value.ToString() == s
               {
                   MessageBox.Show("The value already existed in DataGridView.");
               }
            }
        }   

        }

    }

我保留了您的代码,但几乎没有任何更改。虽然您可能想要做的改动很少。 首先:如果第一行是标题行而不是具有值的行,则使i = 1。 第二:如果第0列的行包含控件,则应将它们转换为控件,然后读取它们的值。