2009-02-23 101 views
1

我有一個顯示對象列表(不是DataSet)的DataGridView。 有沒有簡單的方法來設置過濾器,所以DGV將只顯示與過濾器匹配的行?在.Net中過濾DataGridView行

IList<T> log = ...; 
dgv.DataSource = log; 

回答

3

你有LINQ嗎?如果是這樣,一個選擇是:

dgv.DataSource = log.Where(x=>x.IsActive && x.Type == 3).ToList(); 

然而,新的/刪除的行不會更新原始列表(編輯現有行的罰款)。

如果沒有LINQ,你可以做同樣的List<T>.FindAll

dgv.DataSource = log.FindAll(delegate (SomeType x) { 
    return x.IsActive && x.Type == 3;}); 

還有就是IBindingListView.SupportsFiltering/IBindingListView.Filter對,但沒有標準的清單(包括BindingList<T>)的實現此功能。

1

你可以做Log.Where(filter)這就是通常我如何篩選在綁定到DGV列表中的項目,如果我沒有在發電控制。