Модераторы: gambit, Partizan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как отфильтровать строки в DataGridView? 
:(
    Опции темы
Glen
Дата 23.3.2016, 23:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 60
Регистрация: 15.1.2010

Репутация: нет
Всего: нет



У меня есть .Net приложение с WinForms. В нём есть объект System.Windows.Forms.DataGridView с datasource  в виде BindingSource -> BindingList

Как мне [программно] отфильтровать строки – то есть сделать так чтобы DataGridView отображал только часть строк, имеющихся в том BindingList-е?

Вот как примерно выглядит код:

i
Код

nterface IObj
    {
        int Code { get; set; }
    }

    ... 

    BindingList<IObj> list = <[U]мне дают этот список из другого модуля программы[/U]>;
    BindingSource bs = new BindingSource(list, "Code");
    myGrid.DataSource = bs;


Как мне сделать так, чтобы после выполнения “myGrid.DataSource = bs” мой грид отобраал бы не все строки из list, а только скажем те где IObj.Code == 1?

Причём myGrid не является readonly. Пользователь может там добавлять, обновлять и удалять строки.
И мне нужно (таково условие задачи) чтобы все эти изменения немедленно отображались бы в том списке BindingList<IObj> list. Значит, я не могу просто создать у себя “клон” этого списка, отфильтровав ненужные элементы.

Как написано выше, этот список приходит “из другого модуля программы”, который (модуль) я не контролирую и что-либо менять в нём не могу.

Можно ли эту задачу решить?

PM MAIL   Вверх
chupachups
Дата 24.3.2016, 09:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 0
Регистрация: 15.10.2008

Репутация: 1
Всего: 1



LINQ to Objects - myGrid.DataSource = list.Where(item => item.Code == 1).AsDataView()
или
BindingSource.Filter

читайте люди справку...

Этот ответ добавлен с нового Винграда - http://vingrad.com
PM MAIL   Вверх
Glen
Дата 24.3.2016, 11:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 60
Регистрация: 15.1.2010

Репутация: нет
Всего: нет



Цитата(chupachups @ 24.3.2016,  09:47)
LINQ to Objects - myGrid.DataSource = list.Where(item => item.Code == 1).AsDataView()
или
BindingSource.Filter

читайте люди справку...

Этот ответ добавлен с нового Винграда - http://vingrad.com

Спасибо за ответ

Что касается 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 у меня ни к чему не приводит
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Разработка Windows Forms | Следующая тема »


 




[ Время генерации скрипта: 0.0982 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.