Как привязать DataGridView к SubList - PullRequest
1 голос
/ 07 декабря 2011

У меня есть список Singleton BindingList с объектами.

Мне нужно привязать этот список к DataGridView. Мне нужна сетка для отображения только объектов с определенным значением свойства (свойство IsEmpty, и я хочу показать только объекты с IsEmpty = false).

Я попытался перебрать строки DataGridView после завершения привязки и скрыть строки с IsEmpty = false. Это сработало, но сетка не работает в некоторых ситуациях, таких как сортировка столбцов.

Мой вывод заключается в том, что мне нужно иметь подсписок исходного списка со ссылкой на все объекты в исходном списке, которые имеют свойство IsEmpty = true.

Есть идеи, как лучше всего это сделать? (Мне нужно сохранить событие ListChanged в новом списке, чтобы привязка работала хорошо)

1 Ответ

0 голосов
/ 07 декабря 2011

Вам необходимо отфильтровать источник данных , прежде чем будет привязан к вашей сетке. Лучше всего было бы обратиться к методу linq Where.

IEnumerable<yourType> initialSource = getYourSource();
yourGrid.DataSource = initialSource.Where(x => !x.IsEmpty).ToList();

Это сохранит вашу исходную коллекцию без изменений и будет привязывать сетку только к тем объектам, которые соответствуют фильтру.

Редактировать

Если вы не можете использовать linq, то почему бы не простой цикл?

List<yourType> filteredSource = new List<yourType>();
foreach(var item in initialSource)
    if (!item.isEmpty)
       filteredSource.Add(item);

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