Как вы фильтруете представление DataTable в .Net 3.5 sp1, используя WPF c # и xaml? - PullRequest
0 голосов
/ 28 апреля 2010

Я нашел пример кода MSDN для получения представления коллекции по умолчанию и добавления фильтра к представлению, но большая его часть предназначена для .Net 4.0. Я в команде, которая в настоящее время не переключается на 4.0, поэтому у меня нет такой возможности. Ни один из найденных примеров не использовал DataTable в качестве источника, поэтому мне пришлось немного его адаптировать. Я использую DataTable, потому что данные поступают из БД, и их легко заполнить. После попытки реализовать примеры MSDN я получаю «NotSupportedException» при попытке установить фильтр. Это код C # у меня есть:

защищенный DataTable _data = new DataTable ();
защищенный BindingListCollectionView _filteredDataView;
...
private void On_Loaded (Отправитель объекта, RoutedEventArgs e)
{
_filteredDataView = (BindingListCollectionView) CollectionViewSource.GetDefaultView (_data); _filteredDataView.Filter = new Predicate (MatchesCurrentSelections); // выбрасывает NotSupportedException
}
...
public bool MatchesCurrentSelections (объект o) {...}

Кажется, что либо BindingListCollectionView не поддерживает фильтрацию в .Net 3.5, либо он просто не работает для DataTable. Я смотрел на настройку в XAML вместо кода C #, но примеры XAML используют коллекции в ресурсах вместо коллекции, которая является членом класса, поэтому я понятия не имею, как это настроить. Кто-нибудь знает, как отфильтровать представление в DataTable?

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

Я перестал изучать это некоторое время назад, думал, что обновлю свой вопрос. Я не мог заставить встроенную фильтрацию работать. Похоже, было бы намного проще с .NET 4.0, я прибегал к повторному запросу данных с различными условиями каждый раз, когда требуемая фильтрация изменяется. В среде моего приложения это работает хорошо и очень быстро.

Ответы [ 2 ]

1 голос
/ 29 апреля 2010

BindingListCollectionView не поддерживает фильтрацию и сортировку. Используйте CollectionViewSource для создания экземпляра ListCollectionView, который поддерживает оба.

0 голосов
/ 29 апреля 2011

Я перестал изучать это некоторое время назад, думал, что обновлю свой вопрос.Я не мог заставить встроенную фильтрацию работать.Похоже, было бы намного проще с .NET 4.0, я прибегал к повторному запросу данных с различными условиями каждый раз, когда требуемая фильтрация изменяется.В среде моего приложения это работает хорошо и очень быстро.

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