Извините за задержку, я был на выходных. :)
Проблема в том, что DataBoundControl, такой как ListView, имеет свойство SortExpression, но не FilterExpression. Хорошо реализовать сортируемую сетку / список с ListView с помощью IButtonControl WebControl, который запускает PostBack и событие Command. Затем вы используете метод SortExpression или метод Sort и передаете выражение сортировки, которое заполнит DataSourceSelectArguments.SortExpression, и передадите его в DataSource, который может создать оператор SQL apropiate (в моем случае) для извлечения данных из БД. Это позволяет разделить данные и отображающий их WebControl, IMHO.
Следуя этому шаблону, я собирался реализовать фильтр, заполнив дополнительный объект параметров в моих DataSourceSelectArguments запрошенным фильтром, и я вызову Sort, который передал бы этот объект аргументов в DataSource, где я бы создал Соответствующее предложение.
Я, наконец, решил ее, «кодируя» информацию фильтра в выражении SortExpression, но я нахожу это уродливым (во-первых, для имени: sort! = Filter), и мне было интересно, есть ли более подходящий вариант способ сделать это или если я упускаю что-то более тонкое.
Редактировать
Возможно, лучшим подходом было бы переопределить ListView
метод PerformSelect
и спросить мою собственную реализацию DataSourceView
, может ли он фильтровать, затем вызвать специальный метод ExecuteSelect
, который принимает специальный DataSourceSelectArguments
с объектом фильтра. Старайтесь не делать ничего, что может сломаться, когда кто-то использует пользовательский ListView
с необработанным DataSourceView
, конечно.