删除 gridview 行中的重复值

Remove duplicate value in gridview rows

我以前看过这个问题的提问和回答,但 none 的答案对我有帮助。我希望当我通过按下按钮从文本框中插入一个值时,如果该值已经存在于要删除或根本不插入的 gridview 中。

我的代码:

protected void Buton1_Click(object sender, EventArgs e)
{
    DataTable dt = null;

    if (Session["GridData"] == null)
    {
        dt = new DataTable();
        DataColumn dc = new DataColumn("Name");
        dt.Columns.Add(dc);
    }
    else
    {
        dt = Session["GridData"] as DataTable;
    }

    DataRow dr = dt.NewRow();
    dr["Name"] = TextBox1.Text;
    dt.Rows.Add(dr);
    dt.AcceptChanges();
    GridView1.DataSource = dt;
    GridView1.DataBind();
    Session["GridData"] = dt;
}

最好先检查 table 中是否存在值,然后再将其插入 table。

var data = (from row in dt.AsEnumerable() 
           where row.Field<string>("Name") == TextBox1.Text
           select   row).ToList();
if(data != null && data.Count > 0)
{
  //insert new row in table 
}

var data = (from row in dt.AsEnumerable() 
           select   row).
           FirstODefault(row=>row.Field<string>
                  ("Name") == TextBox1.Text);
if(data != null )
{
  //insert new row in table 
}

尝试在添加行之前检查重复项:

bool isDuplicate = false;
foreach (DataRow row in dt.Rows)
{
    if (row["Name"] == TextBox1.Text)
    {
        isDuplicate = true;
        break;
    }
}

如果不重复就做你的事:

if (!isDuplicate)
{
    DataRow dr = dt.NewRow();
    dr["Name"] = TextBox1.Text;
    dt.Rows.Add(dr);
    dt.AcceptChanges();
    GridView1.DataSource = dt;
    GridView1.DataBind();
    Session["GridData"] = dt;
}

所以你可以从 Sqlserver 端检查如果该值已经存在那么它不应该被插入我认为从 sql 端检查更好因为它比从代码后面检查花费更少的时间

喜欢

if not exists (select name from table where name=@name) begin insert into table values(name)values(@name) end