在datagridview中插入之前防止重复

时间:2014-01-27 16:03:04

标签: c# datagridview

我想在选择一行后添加(或插入)行,但首先我需要检查我添加的是不是重复,每次我输入两个相同的值,我实现了奇怪的结果,我正在使用foreach现在for声明,但这些都没有帮助我:

        private void plus()
    {
        for (int i = 0; i < dataGridView2.Rows.Count; i++)
        {
            if (textBox1.Text == dataGridView2.Rows[i].Cells[0].Value.ToString())
            {
                MessageBox.Show("duple");
                break;
            }
            else
            {
                dataGridView2.Rows.Add(textBox1.Text.Trim(), pictureBox3.Image, pictureBox6.Image);
                break;
            }
        }
        textBox1.SelectAll();
        textBox1.Focus();
    }

enter image description here

4 个答案:

答案 0 :(得分:4)

您正在尝试插入每次迭代。 插入应该在循环的末尾:

for (int i = 0; i < dataGridView2.Rows.Count; i++)
{
    if (textBox1.Text == dataGridView2.Rows[i].Cells[0].Value.ToString())
    {
        MessageBox.Show("duple");
        return;
    }
}

dataGridView2.Rows.Add(textBox1.Text.Trim(), pictureBox3.Image, pictureBox6.Image);

答案 1 :(得分:0)

代码中的问题是,如果文本与行文本不匹配,它将在不搜索完整网格的情况下将文本添加到网格中。还建议使用单元名称而不是单元格索引。

    private void plus()
    {
        bool IsDuplicate = false;
        for (int i = 0; i < dataGridView2.Rows.Count; i++)
        {
            if (textBox1.Text == dataGridView2.Rows[i].Cells[0].Value.ToString())
            {
                IsDuplicate = true;
                MessageBox.Show("duple");
                break;
            }
        }
        if (!IsDuplicate)
            dataGridView2.Rows.Add(textBox1.Text.Trim(), pictureBox3.Image, pictureBox6.Image);

        textBox1.SelectAll();
        textBox1.Focus();
    }

答案 2 :(得分:0)

使用此代码...您需要清空数据集 在使用datagridview和数据绑定时

DataSet ds = new DataSet();

cmd = new SqlCommand("SELECT * from Table", connexion);
da = new SqlDataAdapter(cmd);
dataGridView1.ClearSelection();
ds.Clear();
da.Fill(ds, "Your Dataset here");
dataGridView1.DataSource = ds.Tables[0];
dataGridView1.Refresh();

答案 3 :(得分:-2)

#CREARE静态列表或列表&lt;&gt;并使用此代码我用它来存储多个数据..

 if (!listBox5.Items.Contains(id + "-" + pass + "-" + room + "-" + remoter + "-" + roompass))
     {
         listBox5.Items.Add(id + "-" + pass + "-" + room + "-" + remoter + "-" + roompass);
         Console.WriteLine("NOT THERE ");

         form1.dataGridView1.Rows.Insert(0, id, pass, room, remoter, roompass);
     }