在高级栅格和树形栅格中进行排序、搜索和筛选
针对栅格数据的排序、搜索和筛选操作均可通过附带单个 Filter 事件和 QueryFilter 参数的标准平台查询服务进行处理。触发 Filter 事件时,无论是排序、搜索还是筛选栅格数据,QueryFilter 参数均可确保返回的数据满足所有指定的条件。
您可以通过以下方式查询数据以进行排序、搜索和筛选:
• 设置一个数据表,其中包含您的数据,并使用标准平台 QueryDataTableEntries API 对其进行访问。
• 如果通过数据服务动态生成数据,则使用查询信息表函数对信息表中的数据进行排序和搜索。
实施排序
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%"}]}]}}
在高级栅格中,当筛选与排序和/或搜索一起使用时,绑定在完成时应如下图所示: