Фильтрация строк DataGridView в .Net - PullRequest
1 голос
/ 23 февраля 2009

У меня есть DataGridView, который отображает список объектов (не DataSet). Есть ли простой способ установить фильтр, чтобы DGV отображал только те строки, которые соответствуют фильтру?

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

Ответы [ 2 ]

3 голосов
/ 23 февраля 2009

У вас есть в наличии 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 голос
/ 23 февраля 2009

Вы можете сделать Log.Where(filter) Обычно я фильтрую элементы в списке, привязанном к DGV, если у меня нет контроля над генерацией.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...