0

我有我的gridview,其中数据源是List<T>. 当我尝试在我的 buttonRemove_Click() 函数中从 gridview 中删除一个项目时,另一个处理 RowDeleting 事件的函数被调用,我也从中删除了该项目List<T>。问题是,如果我选择从 gridview 中删除多个项目,gridview 的索引和我的List<T>un-syncs 的索引。例如,我的 gridview 和 List 中有 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)时,它会抛出异常,因为索引超出范围。我该如何解决这个问题?

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

4

1 回答 1

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

请试试这个。也许它可以帮助你。

于 2011-02-11T09:22:07.590 回答