Gridview删除项目

时间:2011-02-11 07:55:16

标签: asp.net gridview rowdeleting

我有一个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)时,它将抛出异常,因为索引超出范围。我该如何解决这个问题?

我认为如果我尝试以相反的顺序删除行,即从最高索引开始,问题将得到解决。谁能告诉我怎么做呢?

1 个答案:

答案 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);
    }
}

请试试这个。 可能它可以帮助你。