Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/33.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用复选框Asp.net从数据表中删除行_C#_Asp.net - Fatal编程技术网

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

C# 使用复选框Asp.net从数据表中删除行,c#,asp.net,C#,Asp.net,我正在使用复选框从数据表中删除一行;当我选中其中一个框时;该行将被删除。但是如果我选中所有的框;它给出此错误消息位置1没有行。。如果我再次选中一个框,则不会删除任何行 foreach (GridViewRow row in GridView1.Rows) { CheckBox chk = row.FindControl("chkInvoice") as CheckBox; if (chk != null && chk

我正在使用复选框从数据表中删除一行;当我选中其中一个框时;该行将被删除。但是如果我选中所有的框;它给出此错误消息位置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();

如果使用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);
    }
}

我得到这个错误,位置4没有行。不确定这是否是因为它检查了headerif是否有一个列,该列的行数为;删除时,如何重置行号;例如,我有三行1 2 3,我选择删除第2行,然后它应该是第1 2行和第1 3行;我怎样才能解决这个问题