删除gridview行中的重复值

时间:2015-07-10 05:48:29

标签: c# asp.net gridview visual-studio-2013 duplicate-removal

我之前已经看过这个问题并得到了回答,但没有一个答案对我有帮助。当我通过按下按钮从文本框插入一个值时,如果该值已存在于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;
}

3 个答案:

答案 0 :(得分:1)

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

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 
}

答案 1 :(得分:0)

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

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;
}

答案 2 :(得分:0)

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

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