Mashup Builder > Виджеты > Унаследованные виджеты > Расширенные сетки (унаследованные) > Сортировка, поиск и фильтрация в расширенной сетке и сетке дерева
Сортировка, поиск и фильтрация в расширенной сетке и сетке дерева
Сортировка, поиск и фильтрация данных сетки обрабатываются через стандартный сервис запросов платформы с одним событием Filter и параметром QueryFilter. Если инициируется событие Filter, будь то сортировка, поиск или фильтрация данных сетки, параметр QueryFilter гарантирует, что возвращенные данные соответствуют всем указанным условиям.
Можно запрашивать данные для сортировки, поиска и фильтрации следующими способами:
Задайте таблицу данных, содержащую данные, и откройте ее с помощью стандартного API платформы QueryDataTableEntries.
При динамическом создании данных с помощью сервиса данных используйте для сортировки и поиска данных в таблице данных функцию таблицы данных запроса.
Дополнительные сведения о параметрах запроса см. в разделе Параметр запроса для сервисов запроса справочного центра ThingWorx.
Реализация сортировки
1. Задайте для свойства EnableSorting значение true, щелкнув его на панели свойств Mashup Builder или определив его в сценарии JSON сервиса динамической конфигурации. Свойство QueryFilter и событие Filter отображаются на панели свойств.
2. Привяжите свойство QueryFilter к входному параметру query, который содержит данные для сортировки:
Если данные находятся в таблице, привяжите QueryFilter к параметру query сервиса QueryDataTableEntries.
При создании данных с помощью сервиса данных свяжите QueryFilter с параметром queryFilter сервиса данных.
3. Привяжите событие фильтра к сервису, который инициируется при начале сортировки:
Если используется таблица данных, свяжите событие Filter с сервисом QueryDataTableEntries.
При создании данных с помощью сервиса данных свяжите событие Filter с сервисом данных.
В следующем примере показан параметр запроса с наименованием столбцов сортировки и применяемое название:
{"maxItems":100000,"query":{"sorts":[{"fieldName":"name","isAscending":true},{"fieldName":"title","isAscending":true}]}}
По завершении этих шагов привязки панель Привязки должна выглядеть примерно так:
Реализация поиска
Поиск предоставляет возможность найти строковое значение в любом столбце сетки.
1. Задайте для свойства EnableGridSearch значение true, щелкнув его на панели свойств Mashup Builder или определив его в сценарии JSON сервиса динамической конфигурации. Свойство GridSearchLocation, свойство QueryFilter и Фильтр появляются на панели свойств.
2. Используйте свойство GridSearchLocation либо на панели свойств Mashup Builder, либо в сценарии JSON, чтобы сконфигурировать расположение поля поиска в сетке. Доступны следующие опции: сверху справа, сверху слева, снизу справа и снизу слева.
3. Привяжите свойство QueryFilter к выходному параметру запроса, который содержит данные для поиска:
Если данные находятся в таблице, привяжите QueryFilter к параметру запроса сервиса QueryDataTableEntries.
При создании данных с помощью сервиса данных свяжите QueryFilter с параметром фильтра запроса сервиса данных.
4. Привяжите событие Filter к сервису, который инициируется при начале поиска.
Если используется таблица данных, свяжите событие Filter с сервисом QueryDataTableEntries.
При создании данных с помощью сервиса данных свяжите событие Filter с сервисом данных.
В следующем примере показан запрос поиска, в котором во всех столбцах выполняется поиск события с именем Rain:
{"maxItems":100000,"query":{"filters":{"type":"OR","filters":[{"fieldName":"id","type":"LIKE","value":"%Rain%"},{"fieldName":"date","type":"LIKE","value":"%Rain%"},{"fieldName":"max_temp","type":"LIKE","value":"%Rain%"},{"fieldName":"min_temp","type":"LIKE","value":"%Rain%"},{"fieldName":"cold","type":"LIKE","value":"%Rain%"},{"fieldName":"visibility","type":"LIKE","value":"%Rain%"},{"fieldName":"wind","type":"LIKE","value":"%Rain%"},{"fieldName":"precipitation","type":"LIKE","value":"%Rain%"},{"fieldName":"events","type":"LIKE","value":"%Rain%"},{"fieldName":"image","type":"LIKE","value":"%Rain%"},{"fieldName":"key","type":"LIKE","value":"%Rain%"},{"fieldName":"location","type":"LIKE","value":"%Rain%"},{"fieldName":"source","type":"LIKE","value":"%Rain%"},{"fieldName":"sourceType","type":"LIKE","value":"%Rain%"},{"fieldName":"tags","type":"LIKE","value":"%Rain%"},{"fieldName":"timestamp","type":"LIKE","value":"%Rain%"}]}}}
Реализация фильтрации
Чтобы реализовать фильтрацию в сетке, добавьте виджет "Фильтр данных" в мэшап, формирующий сетку. Виджет "Фильтр данных" можно добавить только к сетке, которая привязана к таблице данных на основе базовой структуры данных.
1. На вкладке Виджеты в левой части Mashup Builder выберите виджет "Фильтр данных" и перетащите его в свой мэшап.
2. Привяжите параметр выходного запроса виджета фильтра данных к свойству QueryFilter расширенной сетки. В этом сценарии свойство QueryFilter обслуживает и входную, и выходную функции. Он получает входные данные из фильтра данных, который автоматически объединяется с любыми активными входными операциями сортировки и поиска, и генерирует единые выходные данные для параметра запроса.
3. Привяжите свойство QueryFilter к входному параметру query сервиса QueryDataTableEntries таблицы данных, в которой выполняется фильтрация, сортировка или поиск.
В следующем примере показан запрос фильтра данных с единственным параметром фильтра - значением события Rain:
{"maxItems":100000,"query":{"filters":{"fieldName":"events","type":"LIKE","value":"Rain*"}}}
Запрос фильтра может стать намного сложнее, если применено несколько фильтров или если входные данные фильтра комбинируются с параметрами поиска и сортировки. В следующем примере показана комбинация параметров сортировки, поиска и фильтрации в запросе одного выхолного значения:
{"maxItems":100000,"query":{"sorts":[{"fieldName":"id","isAscending":true},{"fieldName":"min_temp","isAscending":true}],"filters":{"type":"And","filters":[{"type":"And","filters":[{"fieldName":"events","type":"LIKE","value":"Rain*"},{"fieldName":"cold","type":"EQ","value":false}]},{"type":"OR","filters":[{"fieldName":"id","type":"LIKE","value":"%21%"},{"fieldName":"date","type":"LIKE","value":"%21%"},{"fieldName":"max_temp","type":"LIKE","value":"%21%"},{"fieldName":"min_temp","type":"LIKE","value":"%21%"},{"fieldName":"cold","type":"LIKE","value":"%21%"},{"fieldName":"visibility","type":"LIKE","value":"%21%"},{"fieldName":"wind","type":"LIKE","value":"%21%"},{"fieldName":"precipitation","type":"LIKE","value":"%21%"},{"fieldName":"events","type":"LIKE","value":"%21%"},{"fieldName":"image","type":"LIKE","value":"%21%"}]}]}}
В расширенной сетке, когда фильтрация используется вместе с сортировкой и/или поиском, привязки должны выглядеть при завершении как на следующей схеме:
Было ли это полезно?