防止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.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();
}
格兰特·温尼

看起来最容易做的事情就是替换break;return;

无需中断for循环,您只需在标签上设置错误消息并离开方法即可。


您还可以for用LINQ语句替换第一个循环:

if (myGrid.Rows.Cast<GridViewRow>().Any(x => x.Cells[1].Text == FileName))
{
    lblMessage.Text = "File already in the list";
    return;
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章