C# 在插入到gridview之前查找重复项

C# 在插入到gridview之前查找重复项,c#,asp.net,C#,Asp.net,如何在插入gridview之前进行检查,我的插入代码位于按钮单击下方 if (Session["dtInSession"] != null) dt1 = (DataTable)Session["dtInSession"]; DataRow dr = dt1.NewRow(); dr["AccessoryName"] = drpAccessories.SelectedItem; dr["ConditionName"] = drpConditions.Selected

如何在插入gridview之前进行检查,我的插入代码位于按钮单击下方

if (Session["dtInSession"] != null)
    dt1 = (DataTable)Session["dtInSession"];
    DataRow dr = dt1.NewRow();
    dr["AccessoryName"] = drpAccessories.SelectedItem;
    dr["ConditionName"] = drpConditions.SelectedItem;
    dt1.Rows.Add(dr);
    Session["dtInSession"] = dt1; 
    ViewState["CurrentTable"] = dt1;
    grvList.DataSource = dt1;
    grvList.DataBind();
我尝试了这种方法,但它肯定只会检查最后选定的项目,而不会检查已经插入的其他行

if (grvList.Rows.Count > 0)
{
  foreach (GridViewRow gr in grvList.Rows)
  {
    accessorucheck = ((Label)gr.FindControl("txtAccessories")).Text;
    if (accessorucheck == drpAccessories.Text)
    {
      ClientScript.RegisterStartupScript(Page.GetType(), "validation1", "<script language='javascript'>alert('Accessory Alredy Added, Please change the condition if needed.')</script>");
    }
    else
    {
      if (Session["dtInSession"] != null)
        dt1 = (DataTable)Session["dtInSession"];
        DataRow dr = dt1.NewRow();
        dr["AccessoryName"] = drpAccessories.SelectedItem;
        dr["ConditionName"] = drpConditions.SelectedItem;
        dt1.Rows.Add(dr);
        Session["dtInSession"] = dt1;
        grvList.DataSource = dt1;
        grvList.DataBind();
    }
  }
}
if(grvList.Rows.Count>0)
{
foreach(grvList.Rows中的GridViewRow gr)
{
accessorucheck=((标签)gr.FindControl(“txtAccessories”)).Text;
if(accessorucheck==drpAccessories.Text)
{
ClientScript.RegisterStartupScript(Page.GetType(),“validation1”,“警报('已添加附件,如果需要,请更改条件');
}
其他的
{
如果(会话[“dtInSession”]!=null)
dt1=(数据表)会话[“dtInSession”];
DataRow dr=dt1.NewRow();
dr[“AccessoryName”]=drpacAccessories.SelectedItem;
dr[“ConditionName”]=drpConditions.SelectedItem;
dt1.Rows.Add(dr);
会话[“dtInSession”]=dt1;
grvList.DataSource=dt1;
grvList.DataBind();
}
}
}

您可以使用DataView.ToTable


您可以按照上面提到的ihtsham的方法,但是最终仍然会插入一条记录,然后再次忽略,这会增加不必要的开销

我更希望在从会话变量获取datatable之后,使用
select
命令检查是否存在这样的行。你可以使用类似的东西,不要认为语法是完美的,因为我的ASP.Net已经生锈了,但它应该让你走上正轨

if (dt2.Select("AccessoryName = 'Var' AND ConditionName = 'Var2'").Rows.Count == 0)
{
   //Insert code here
}
else
{
   //Code to execute when duplicate added
}

它只会帮助您显示distinct,而在插入时不会显示任何错误消息。谢谢ihtsham。现在正在使用您的代码。非常感谢你的帮助。
if (dt2.Select("AccessoryName = 'Var' AND ConditionName = 'Var2'").Rows.Count == 0)
{
   //Insert code here
}
else
{
   //Code to execute when duplicate added
}