Excel как функция FILTER в сетке данных Silverlight? - PullRequest
4 голосов
/ 26 апреля 2010

В Excel есть эта функция для фильтрации ячеек столбца.

Как реализовать функцию Excel как FILTER в Silverlight Datagrid?

Пожалуйста, совет. Спасибо

AJ

1 Ответ

3 голосов
/ 26 апреля 2010

Хороший вопрос - это хорошая функция, но она не может быть реализована за 5 минут.

Вы не хотите каким-либо образом переопределять рендеринг стандартной сетки данных (слишком много работы), поэтому вам нужно использовать немного другой подход. Один из способов сделать это - нарисовать свой собственный «заголовок» над вершиной сетки - просто сетка с рамкой и панелью стека, которая поможет вам начать. Затем вам нужно перечислить видимые столбцы сетки и создать раскрывающийся список, соответствующий каждому из них, и добавить этот раскрывающийся список в панель стека. Используя простой оператор linq, вы можете получить список различных значений в каждом столбце. Когда пользователь выбирает значение из раскрывающегося списка, вы можете отфильтровать источник данных сетки, используя это значение в операторе LINQ.

В действительности это, вероятно, будет как минимум недельной работой, чтобы сделать правильно. Если вы возьмете стоимость этой разработки и стоимость тестирования и сравните ее с затратами на хороший набор компонентов, в котором уже встроена фильтрация (большинство крупных поставщиков), то если вы не работаете на очень с низкой почасовой оплатой вы обнаружите, что дешевле покупать компоненты - это, вероятно, тоже безопаснее, так как компоненты будут хорошо протестированы и действительно не содержат ошибок.

Редактировать (через некоторое время) : хотя я должен также упомянуть, что если вы хотите сделать это только на нескольких столбцах, вы можете рассмотреть возможность использования заголовка столбца шаблон. Если вы воспользуетесь этим подходом, вам также придется делать такие вещи, как копирование различных анимаций или переходов, связанных с мышью, которые могут быть частью исходного заголовка колонки, просто чтобы вы могли сохранять некоторую согласованность в верхней части сетки. Лично я бы выбрал первый вариант и дал бы пользователю возможность фильтровать по любому из столбцов.

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