Фильтрация списков в приложении Windows Forms - PullRequest
0 голосов
/ 14 сентября 2009

Можно ли фильтровать содержимое списка в приложении Windows Forms?

Источник данных моего ListBox - это BindingSource, содержащий набор DTO в:

IList<DisplayDTO>

Я хочу отфильтровать свойство DTO, указанное в DisplayMember ListBox.

Текст для фильтрации предоставляется в отдельном текстовом поле.

1 Ответ

3 голосов
/ 14 сентября 2009

Это должно работать:

private void textBox_TextChanged(object sender, EventArgs e)
{
    bindingSource.Filter = string.Format("[{0}] LIKE '%{1}%'",
                                         listBox.DisplayMember,
                                         textBox.Text.Replace("'", "''"));
}

РЕДАКТИРОВАТЬ: это работает, только если базовый источник данных (bindingSource.DataSource) реализует IBindingListView. В FCL только класс DataView реализует этот интерфейс.

Вы можете создать собственную реализацию, унаследовав от BindingList<T>. Вот статья , которая объясняет, как добавить функциональность фильтра. Вы также можете найти различные реализации SortableBindingList в Google.

...