2011-02-11 286 views
0

我有我gridview其中的数据源是List<T>。当我尝试从我的buttonRemove_Click()函数的gridview中移除一个项目时,调用另一个处理RowDeleting事件的函数,我也从List<T>中移除了该项目。问题是,如果我选择从gridview中删除多个项目的gridview索引和我的List<T> un-syncs。例如,我在我的GridView和我的列表中有10个项目,我尝试删除最后两个项目。下面是我如何做到这一点,我buttonRemove_Click功能Gridview删除项目

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

请试试这个。 可能会帮助你。

+0

请从每一行中查找复选框。 – harshagile 2011-02-11 09:23:25