我有一个gridview,其中数据源是List<T>
。当我尝试从我的buttonRemove_Click()函数中的gridview中删除一个项时,调用另一个处理RowDeleting事件的函数,我也从List<T>
中删除该项。问题是,如果我选择从gridview中删除多个项目gridview的索引和我的List<T>
取消同步的索引。例如,我的gridview和我的列表中有10个项目,我尝试删除最后两个项目。以下是我在buttonRemove_Click函数
foreach (GridViewRow row in gridViewItems.Rows)
{
CheckBox cb = (CheckBox)row.FindControl("checkBox");
if (cb != null && cb.Checked)
{
gridViewItems.DeleteRow(row.DataItemIndex);
}
}
然后在RowDeleting函数中,我将首先收到索引8的事件,我将其删除。现在,当删除最后一项(索引9)时,它将抛出异常,因为索引超出范围。我该如何解决这个问题?
我认为如果我尝试以相反的顺序删除行,即从最高索引开始,问题将得到解决。谁能告诉我怎么做呢?
答案 0 :(得分:1)
GVGLCode1.DataSource = dt;
GVGLCode1.DataBind();
int iCount = GVGLCode1.Rows.Count;
for (int i = 0; i <= iCount; i++)
{
CheckBox cb = (CheckBox)GVGLCode1.rows[i].FindControl("checkBox");
if (cb != null && cb.Checked)
{
GVGLCode1.DeleteRow(i);
}
}
请试试这个。 可能它可以帮助你。