Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > Разработка Windows Forms > Как отфильтровать строки в DataGridView? |
Автор: Glen 23.3.2016, 23:22 | ||
У меня есть .Net приложение с WinForms. В нём есть объект System.Windows.Forms.DataGridView с datasource в виде BindingSource -> BindingList Как мне [программно] отфильтровать строки – то есть сделать так чтобы DataGridView отображал только часть строк, имеющихся в том BindingList-е? Вот как примерно выглядит код: i
Как мне сделать так, чтобы после выполнения “myGrid.DataSource = bs” мой грид отобраал бы не все строки из list, а только скажем те где IObj.Code == 1? Причём myGrid не является readonly. Пользователь может там добавлять, обновлять и удалять строки. И мне нужно (таково условие задачи) чтобы все эти изменения немедленно отображались бы в том списке BindingList<IObj> list. Значит, я не могу просто создать у себя “клон” этого списка, отфильтровав ненужные элементы. Как написано выше, этот список приходит “из другого модуля программы”, который (модуль) я не контролирую и что-либо менять в нём не могу. Можно ли эту задачу решить? |
Автор: chupachups 24.3.2016, 09:47 |
https://msdn.microsoft.com/ru-ru/library/bb397919.aspx - myGrid.DataSource = list.Where(item => item.Code == 1).AsDataView() или https://msdn.microsoft.com/ru-ru/library/system.windows.forms.bindingsource.filter(v=vs.110).aspx читайте люди справку... Этот ответ добавлен с нового Винграда - http://ru.vingrad.com/Kak-otfiltrovat-stroki-v-DataGridView-id56f2fb62ae20152f178b4567#findElement_E7045_56f38d67ae20158448cd5a1f_0 |
Автор: Glen 24.3.2016, 11:15 | ||
Спасибо за ответ Что касается BindingSource.Filter - нет, это у меня точно не сработает; уже пробовал Сам по себе BindingSource.Filter - всего лишь строка говорящая "как фильтровать". http://stackoverflow.com/questions/1...-as-datasource : As per http://msdn.microsoft.com/en-us/libr...ce.filter.aspx Only underlying lists that implement the IBindingListView interface support filtering. BindingList<T> does not appear to implement IBindingListView - and since it is the underlying list, your collection will not filter. А у меня как раз и испрльзуется BindingList<T>, которые НЕ реализует IBindingListView. Потому установка чего-то в BindingSource.Filter у меня ни к чему не приводит |