Комплексная фильтрация в веб-приложении - PullRequest
4 голосов
/ 18 сентября 2010

Мне нужно оценить (и, возможно, построить позже) сложный фильтр в приложении ASP.NET WebForms. Фильтр должен быть в основном основан на ASP.NET AJAX или jQuery для высокой интерактивности. Фильтр должен позволять фильтровать данные со сложными логическими условиями (и, или, фигурными скобками) и несколькими операторами. Пользователь должен иметь возможность сохранить запрос фильтра и использовать его (загрузить его) позже (логика сервера). Более того, все еще обсуждается оператор.

Приложение должно предоставлять графический конструктор фильтров. Я хочу иметь полный контроль над множеством операндов (поля фильтрации) и операторов. Компонент будет использоваться для всех действий фильтрации в приложении. Моя проблема только в том, как выполнить часть пользовательского интерфейса - перевод встроенной «структуры запроса» не является проблемой.

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

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

Я уже проверил доступные элементы управления в наборе инструментов DevExpress и Telerik:

DevExpress :

  • Плюсы: действительно приятная визуализация, быстрая. Вероятно, у нас есть лицензии DevExpress.
  • Минусы: тесно связаны с сеткой DevExpress. На основании документации нет расширяемости и нет контроля над операндами и операторами. Он использует операнды в виде столбцов для сетки - мне нужно гораздо больше. Вероятно, невозможно сохранить и загрузить фильтры.

Telerik

  • Плюсы: не связаны с сеткой, это выглядит как отдельный элемент управления.
  • Минусы: я не нашел документации - я не уверен насчет расширяемости, но код выглядит так, как будто он использует некоторый элемент управления связью данных в качестве источника операндов = проблема. Мне не нравится визуализация. Демо действительно медленно. У нас нет лицензий Telerik.

Ответы [ 3 ]

2 голосов
/ 18 сентября 2010

Самая важная вещь, которую я хотел бы предложить: держите интерфейс вашего построителя запросов достаточно отделенным от того, какую сетку вы используете. Когда он тесно связан, это заставляет вас принимать конструктивные и технические решения, о которых вы можете пожалеть позже. DevExpress особенно часто вносит несколько критических изменений в каждую пару выпусков, и это может вынудить вас постоянно реорганизовывать свой код. У них также есть несколько своеобразных уникальных способов ведения дел, которые могут означать, что вы в конечном итоге будете кодировать хаки для достижения того, чего вы хотите.

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

Личный комментарий - после тщательной фильтрации обоих наборов компонентов скажу одно: мы переехали в Telerik по какой-то причине. Ну, на самом деле много причин. И мы не оглядывались назад с сожалением. Кроме того, ребята из Telerik очень хорошо помогают расширять и делать забавные вещи со своими элементами управления, в то время как ребята из DevExpress склонны придерживаться позиции «зачем вам расширять наши элементы управления? Конкурсы популярности на конференциях разработчиков в конце концов. ". Вы действительно должны сделать испытание между ними, прежде чем совершить одно или другое. Удачи:)

1 голос
/ 21 сентября 2010

Мы уже давно используем Telerik RadControls, и я могу сказать, что мы удовлетворены функциональностью, которую они предлагают.

Мы также экспериментировали с RadFilter, который является относительно новым элементом управления в пакете.Документацию можно найти здесь: http://www.telerik.com/help/aspnet-ajax/filter-overview.html

Вот несколько причин, по которым мы включаем RadFilter в наши приложения: - он может использоваться с другими элементами управления - однако вам необходимо определить поля явно, кроме случаев использованияRadGrid и RadListView - он, кажется, не тесно связан с каким-либо другим элементом управления (учитывая примечание выше) - он может сохранять / загружать выражения - он позволяет вам писать собственные sql для выражений сборки - самая крутая функция - фильтрация непосредственно по даннымэлементы управления исходным кодом - мы часто используем его в последнее время (на их сайте есть демоверсия)

«Демо действительно медленное» - оно может быть медленным из-за запросов AJAX, выполняемых после каждого изменения настроек,Фильтр DevEx (http://demos.devexpress.com/ASPxGridViewDemos/Filtering/FilterBuilder.aspx) работает так же.

0 голосов
/ 20 сентября 2010

Позвольте мне ответить вам от имени службы поддержки DevExpress.На самом деле, мы часто спрашиваем наших клиентов, почему они хотят делать то или иное с нашим контролем.Вы можете подумать, что это способ замедлить процесс решения проблемы.Однако, с моей точки зрения, этот способ является самым быстрым для решения проблемы.Сидя рядом с нашими разработчиками и работая круглые сутки с нашими элементами управления, мы обычно знаем такие вещи об элементах управления, которые известны любому в мире.Таким образом, это частая ситуация, когда мы предлагаем совершенно другое решение по сравнению с исходной задачей, и оно работает лучше и надежнее.

Я могу только подтвердить, что лучшее решение - это попробовать два разных набора управления, проверить, какой из них лучше соответствует вашим требованиям, и, наконец, сделать выбор.

Удачи:)

...