使用复选框Asp.net从数据表中删除行

时间:2018-05-08 21:20:29

标签: c# asp.net

我正在使用复选框从数据表中删除一行;当我检查其中一个盒子;该行已删除。但如果我检查所有的盒子;它会给出此错误消息 位置1处没有行。 。如果我回去检查一个方框,则不会删除任何行。

foreach (GridViewRow row in GridView1.Rows)
        {
            CheckBox chk = row.FindControl("chkInvoice") as CheckBox;
            if (chk != null && chk.Checked)
            {

                dt.Rows.RemoveAt(row.RowIndex);


            }

        }


        GridView1.DataSource = dt;
        GridView1.DataBind();

1 个答案:

答案 0 :(得分:0)

如果使用foreach,则会在迭代时修改行。所以做一个反向循环并根据索引删除。

for(int i = GridView1.Rows.Count - 1; i >= 0; i--)
{
    var row = GridView1.Rows[i];
    CheckBox chk = row.FindControl("chkInvoice") as CheckBox;
    if (chk != null && chk.Checked)
    {
       dt.Rows.RemoveAt(i);
    }
}