C# 防止GridView添加重复条目

C# 防止GridView添加重复条目,c#,asp.net,gridview,C#,Asp.net,Gridview,下面的代码显示验证消息“文件已在列表中”,如果该文件已存在,但不会阻止它添加到gridview。将能够提出问题所在。多谢各位 if (GridFiles.Rows.Count > 0) { int count = GridFiles.Rows.Count; dt = new DataTable(); DataColumn dcFileName = new DataColumn("File Name", typeof(string)); dt.Columns.

下面的代码显示验证消息“文件已在列表中”,如果该文件已存在,但不会阻止它添加到gridview。将能够提出问题所在。多谢各位

if (GridFiles.Rows.Count > 0)
{
    int count = GridFiles.Rows.Count;
    dt = new DataTable();
    DataColumn dcFileName = new DataColumn("File Name", typeof(string));
    dt.Columns.Add(dcFileName);

    for (int j = 0; j < count; j++)
    {
        if (GridFiles.Rows[j].Cells[1].Text == FileName)
        {
            lblMessage.Text = "File already in the list";
            break;
        }

    }

    for (int k = 0; k < count; k++)
    {
        dr = dt.NewRow();
        dr["File Name"] = GridFiles.Rows[k].Cells[1].Text;
        dt.Rows.Add(dr);
    }


    dr = dt.NewRow();
    dr["File Name"] = FileName;
    dt.Rows.Add(dr);
    GridFiles.DataSource = dt;
    ViewState["grdContent"] = dt; //stored datable in viewstate
    GridFiles.DataBind();
}

else
{
    dt = new DataTable();

    DataColumn dcFileName = new DataColumn("File Name", typeof(string));
    dt.Columns.Add(dcFileName);
    dr = dt.NewRow();
    dr["File Name"] = FileName;
    dt.Rows.Add(dr);
    GridFiles.DataSource = dt;
    ViewState["grdContent"] = dt; //stored datable in viewstate
    GridFiles.DataBind();
}
if(GridFiles.Rows.Count>0)
{
int count=GridFiles.Rows.count;
dt=新数据表();
DataColumn dcFileName=新的DataColumn(“文件名”,类型(字符串));
dt.Columns.Add(dcFileName);
对于(int j=0;j
将这两个
组合在一起,形成
循环。如果第一个文件名相同,则中断第一个文件,但仍然进入下一个
for
循环并添加它

for (int j = 0; j < count; j++)
{
    if (GridFiles.Rows[j].Cells[1].Text == FileName)
    {
        lblMessage.Text = "File already in the list";
        break;
    }
    dr = dt.NewRow();
    dr["File Name"] = GridFiles.Rows[j].Cells[1].Text;
    dt.Rows.Add(dr);
}
for(int j=0;j
看来要让它工作起来,最简单的方法就是更换
断路器
返回

您只需在标签上设置错误消息并保留该方法,而不是中断
for
循环


还可以用LINQ语句替换
for的第一个

if (myGrid.Rows.Cast<GridViewRow>().Any(x => x.Cells[1].Text == FileName))
{
    lblMessage.Text = "File already in the list";
    return;
}
if(myGrid.Rows.Cast().Any(x=>x.Cells[1].Text==FileName))
{
lblMessage.Text=“文件已在列表中”;
回来
}

你好,格兰特,我已经更新了帖子。我的意思是验证消息不例外。谢谢GridViews真的只是显示数据,如果您在下划线数据表上设置了主键,那么问题应该得到解决。