2011-02-11 116 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