C# 使用复选框Asp.net从数据表中删除行
我正在使用复选框从数据表中删除一行;当我选中其中一个框时;该行将被删除。但是如果我选中所有的框;它给出此错误消息位置1没有行。。如果我再次选中一个框,则不会删除任何行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
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行;我怎样才能解决这个问题