Действительная фильтрация

все что требуется сделать в

Для действительной фильтрации воспользуйтесь встроенными возможностями самого компонента BindingSource, Который сделает за вас всю грязную работу. Все, что требуется сделать в обработчике события Click Кнопки — это указать критерий фильтрации, который должен быть допустимым выражением для свойства Filter. Поддерживаемые компонентом BindingSource Выражения фильтра проще тех, что используются свойством DataColumn.Expression; Здесь у вас нет различных ограничителей для различных типов данных. Вы просто заключаете значение фильтруемого свойства или поля в одиночные кавычки, что годится также для численных типов и для дат. Однако нижележащий источник данных не обязан поддерживать фильтрацию; это означало бы, что он должен поддерживать интерфейс IBindingListView . Прежде всего метод фильтрации убеждается, что для работы имеются наличные данные; если нет, он возвращает управление. Далее, если для фильтра введено пустое выражение, это должно расцениваться как очистка выражения фильтра, поэтому код проверяет, не пусто ли текстовое поле, и если пусто, устанавливает свойство Filter Источника привязки в Null. Обратите внимание на вызов String.IsNullOrEmpty. Это новый метод класса строк, введенный в. NET 2.0, и он избавляет от необходимости писать длинный условный оператор, проверяющий оба варианта — пустую строку или нулевую строку, что очень часто приходится делать в коде, работающем со строками. В данном случае такой необходимости по существу нет, поскольку элемент управления TextBox, Если он пуст, всегда возвращает пустую строку.

После этого код забирает имя столбца из комбинированного поля и строку фильтра из текстового поля, используя их для конструирования выражения фильтра при помощи метода String.Format, И устанавливает его в качестве свойства Filter Источника привязки. Когда все это сделано, вы получаете возможность во время выполнения ввести в текстовое поле значения для фильтра, в чем вам будет помогать функция автозавершения, а затем настроить сетку на отображение соответствующих значений, щелкнув на кнопке Filter.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *