我有一個顯示對象列表(不是DataSet)的DataGridView。 有沒有簡單的方法來設置過濾器,所以DGV將只顯示與過濾器匹配的行?在.Net中過濾DataGridView行
IList<T> log = ...;
dgv.DataSource = log;
我有一個顯示對象列表(不是DataSet)的DataGridView。 有沒有簡單的方法來設置過濾器,所以DGV將只顯示與過濾器匹配的行?在.Net中過濾DataGridView行
IList<T> log = ...;
dgv.DataSource = log;
你有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>
)的實現此功能。
你可以做Log.Where(filter)
這就是通常我如何篩選在綁定到DGV列表中的項目,如果我沒有在發電控制。