2012-01-23 22 views
0

我試圖刪除未綁定的datagridview中的所有標記/檢查行。複選框列以編程方式添加。我知道我必須使用如何獲取datagridview複選框列中的多個行索引C#

RequestedEmpGrid.Rows.Remove(RequestedEmpGrid.Rows[ForRequestRow.Index]); 

從網格中刪除該行。但是,我無法獲取datagridview中多個選中行的行索引。我的循環不起作用。幫幫我?

    //REMOVE ALL CHECKED 
        foreach (DataGridViewRow ForRequestRow in RequestedEmpGrid.Rows) 
        { 
         if (Convert.ToBoolean(ForRequestRow.Cells[MarkColumn.Name].Value) == true) 
         { 
          RequestedEmpGrid.Rows[ForRequestRow.Index].Selected = true; 
          RequestedEmpGrid.Rows.Remove(RequestedEmpGrid.Rows[ForRequestRow.Index]); 
         } 
        } 
+0

什麼樣的行爲不起作用?你有沒有例外,沒有結果? –

+0

@ user1141604在哪個事件中您需要刪除行? – Nalaka526

+0

當你有興趣去除行,那麼它建議你從最後一行開始,一個接一個地刪除,另一種方式它會擾亂索引,並且不應該工作或許你打算這樣做 – V4Vendetta

回答

0

你爲什麼不嘗試

RequestedEmpGrid.Rows.Remove(ForRequestRow) 

它只會從GridView中刪除行而不是從數據源,所以不用重新綁定gridview的,因爲它會重新添加刪除的行。

如果你想從數據源中刪除以及從數據庫中刪除選定的行,然後重新綁定gridview。

+1

*未綁定datagridview *是關鍵部分 – V4Vendetta

+0

我試過這一個,我標記了三行,底部兩個被刪除。第一個檢查行保留。 – RMSP

+0

@ user1141604你有沒有檢查鏈接,因爲在我的意見,這將解釋爲什麼它的失敗 – V4Vendetta

0

你可以試試這個代碼:

foreach (DataGridViewRow requestRow in RequestedEmpGrid.Rows) 
{ 
    if (Convert.ToBoolean(requestRow.Cells[MarkColumn.Name].Value)) 
    { 
     RequestedEmpGrid.Rows.Remove(requestRow); 
    } 
} 

或本:

foreach (DataGridViewRow requestRow in RequestedEmpGrid.Rows) 
{ 
    if (Convert.ToBoolean(requestRow.Cells[MarkColumn.Name].Value)) 
    { 
     RequestedEmpGrid.Rows.RemoveAt(requestRow.Index); 
    } 
} 

更新: 怎麼樣?

for (int i = RequestedEmpGrid.Rows.Count; i >= 0; i--) 
{ 
    var row = RequestedEmpGrid.Rows[i]; 
    if (Convert.ToBoolean(row.Cells[MarkColumn.Name].Value)) 
    { 
     RequestedEmpGrid.Rows.RemoveAt(i); 
    } 
} 
+0

嗨我已經嘗試了這兩個代碼,但並非所有檢查行都被刪除。 :( – RMSP

相關問題