Mashup Builder > 小组件 > 高级栅格 > 在高级栅格和树形栅格中进行排序、搜索和筛选
在高级栅格和树形栅格中进行排序、搜索和筛选
针对栅格数据的排序、搜索和筛选操作均可通过附带单个 Filter 事件和 QueryFilter 参数的标准平台查询服务进行处理。触发 Filter 事件时,无论是排序、搜索还是筛选栅格数据,QueryFilter 参数均可确保返回的数据满足所有指定的条件。
您可以通过以下方式查询数据以进行排序、搜索和筛选:
设置一个数据表,其中包含您的数据,并使用标准平台 QueryDataTableEntries API 对其进行访问。
如果通过数据服务动态生成数据,则使用查询信息表函数对信息表中的数据进行排序和搜索。
有关查询参数的详细信息,请参阅 ThingWorx 帮助中心的 Query Parameter for Query Services (查询服务的查询参数) 部分。
实施排序
1. EnableSorting 属性设置为 true,方法是在 Mashup Builder 的属性面板中单击该属性,或在动态配置服务的 JSON 脚本中对其进行定义。QueryFilter 属性和 Filter 事件随即显示在属性面板中。
2. QueryFilter 属性绑定到要排序的数据所在的输出查询参数:
如果数据位于表中,则将 QueryFilter 绑定到 QueryDataTableEntries 服务的查询参数。
如果要通过数据服务生成数据,请将 QueryFilter 绑定到数据服务的 queryFilter 参数。
3. 将 Filter 事件绑定到将在排序开始时触发的服务:
如果使用的是数据表,请将 Filter 事件绑定到 QueryDataTableEntries 服务。
如果要通过数据服务生成数据,请将 Filter 事件绑定到数据服务。
以下示例显示应用了排序列名称和标题的查询参数:
{"maxItems":100000,"query":{"sorts":[{"fieldName":"name","isAscending":true},{"fieldName":"title","isAscending":true}]}}
完成这些绑定步骤后,“连接”面板的外观应如下所示:
实施搜索
搜索操作提供了在栅格的任何列中查找字符串值的功能。
1. EnableGridSearch 属性设置为 true,方法是在 Mashup Builder 的属性面板中单击该属性,或在动态配置服务的 JSON 脚本中对其进行定义。GridSearchLocation 属性、QueryFilter 属性和筛选器会显示在属性面板中。
2. 使用 Mashup Builder 属性或 JSON 脚本中的 GridSearchLocation 属性来配置“搜索”字段在栅格中的位置。可用选项包括:右上、左上、右下和左下。
3. QueryFilter 属性绑定到要搜索的数据所在的输出查询参数:
如果数据位于表中,则将 QueryFilter 绑定到 QueryDataTableEntries 服务的查询参数。
如果要通过数据服务生成数据,请将 QueryFilter 绑定到数据服务的 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 属性绑定到正在筛选、排序或搜索的数据表中 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%"}]}]}}
在高级栅格中,当筛选与排序和/或搜索一起使用时,绑定在完成时应如下图所示: