2009-12-01 39 views
1

是否有直接的方法來做到這一點,或者是否需要遍歷DataGridView.SelectedRows,然後訪問每行的DataGridViewRow.DataBoundItem以創建一個?獲取與選定的DataGridView行相關的所有DataRows的集合

+1

這聽起來很直接。 – mquander 2009-12-01 21:49:45

+1

假設的DataGridView.GetSelectedRowsInDataSource方法比我自己編寫方法更直接。最好問一個愚蠢的問題,而不是讓維護程序員質疑我重寫框架的能力。 – 2009-12-01 22:06:58

回答

3

DataGridView不提供SelectedDataRows和SelectedRows,而不是啓用Linq,所以是的,你將不得不編寫一個foreach循環。

0

的通用擴展方法「SelectedDataRows」添加到DataGridViews:

public static T[] SelectedDataRows<T>(this DataGridView dg) where T : DataRow 
{ 
    T[] rows = new T[dg.SelectedRows.Count]; 
    for (int i = 0; i < dg.SelectedRows.Count; i++) 
     rows[i] = (T)((DataRowView)dg.SelectedRows[i].DataBoundItem).Row; 

    return rows; 
} 

這是通用的,這樣就可以使用返回類型化數據集一個類型化的數據行。如果你願意,你可以讓你的返回DataRow[]。這也假設你的DataGridView綁定了一個DataView