C#Visual - Datagridview搜索textbox = cell string

时间:2015-12-31 18:17:57

标签: c# winforms datagridview

我正在尝试这样做,以便当您将数据输入DataGridView时,它首先检查 如果ID文本框包含DataGridView ID列中存在的字符串,并在找到匹配项时抛出错误。

如果不匹配,则系统可以添加数据。

我尝试了所有类型的代码,人们发布的内容没有任何效果。 这是我最新的。

private void btnadd_Click(object sender, EventArgs e)
{
    Label label25 = new Label();

    foreach (DataGridViewRow row in dataGridView1.Rows)
    {
        if (row.Cells[0].Value.ToString() == IDtxtbox.Text)
        {
            label25.Text = "ID was already created,try some other number";
            break;
        }
        else
        {
            dataGridView1.Rows.Add(IDtxtbox.Text, Nametxtbox.Text);
            break;
        }
    }
}

2 个答案:

答案 0 :(得分:1)

在上面的代码中,如果第一行不包含该值,则添加该值。

您可以这样检查:

var exists= dataGridView1.Rows.Cast<DataGridViewRow>()
                         .Where(row => !row.IsNewRow)
                         .Select(row => row.Cells[0].Value.ToString())
                         .Any(x => this.IDtxtbox.Text == x);

if(!exists)
{
    //Add rows here
}

不要忘记添加using System.Linq;

答案 1 :(得分:0)

如果你使用Linq,Reza的答案是完美的,但是如果你是Linq的新手并且需要一个更简单的解决方案,你可以去:

想法是检查包含ID的所有行。如果任何行具有该ID,则hasDuplicate变为真。在检查了所有行(foreach循环)之后,您应该决定做什么(if-else语句):喜欢显示消息(label25.Text)或添加新行({{ 1}})。

dataGridView1.Rows.Add