原文地址: https://kuchatom.hashnode.dev/a-guide-to-implement-faceted-search-with-any-region-in-oracle-apex # 在Oracle APEX中实现任何区域的分面搜索 ![分面搜索与任何区域配对的实现指南](https://kuchatom.hashnode.dev/_next/image?url=https%3A%2F%2Fcdn.hashnode.com%2Fres%2Fhashnode%2Fimage%2Fupload%2Fv1767879593329%2F4a6a9d5a-6c24-4bdc-b8d5-d04168e0ac8d.png&w=3840&q=75) ## 秘密配对技术 分面搜索通常不与交互式网格或交互式报告配对使用,因为这会限制报告的功能。本文介绍了一种无需JavaScript或黑客技术的简单方法,只需在查询中使用页面项即可实现分面搜索与交互式网格的配合。 ## 示例应用程序 ### 经典报告与分面搜索 首先创建一个分面搜索区域和一个经典报告,基于示例表`EBA_GRAPHVIZ_AIRPORTS`。设置几个分面,如名称、城市、机场类型和时区,并链接到经典报告的对应列。 ![经典报告与分面搜索](https://cdn.hashnode.com/res/hashnode/image/upload/v1767866444054/8646f1ab-1bd1-4b07-b2f4-6aa024e8bca2.png) ### 实现交互式网格 将经典报告替换为交互式网格,使用相同的查询。通过动态动作和WHERE条件将分面搜索与交互式网格关联。 ![交互式网格实现](https://cdn.hashnode.com/res/hashnode/image/upload/v1767867865364/f7d15162-1244-4b63-ad1a-d2b306062f84.png) 动态动作在页面项更改时刷新交互式网格: ![动态动作设置](https://cdn.hashnode.com/res/hashnode/image/upload/v1767868564001/c5f3082e-3d48-469b-87de-a218d090a555.png) WHERE条件代码如下: ```sql NAME in (select column_value from table (apex_string.split(NVL(:P1_NAME,NAME), ':'))) AND CITY in (select column_value from table (apex_string.split(NVL(:P1_CITY,CITY), ':'))) AND AIRPORT_TYPE in (select column_value from table (apex_string.split(NVL(:P1_AIRPORT_TYPE,AIRPORT_TYPE), ':'))) AND TIMEZONE in (select column_value from table (apex_string.split(NVL(:P1_TIMEZONE,TIMEZONE), ':'))) ``` ### 实现地图区域 在选项卡容器中添加地图区域,同样使用分面搜索的条件和刷新动作: ![地图区域实现](https://cdn.hashnode.com/res/hashnode/image/upload/v1767869835676/bb312a32-1745-4713-b446-6d17ad63fab6.png) ## 演示应用 演示应用可在[此处](https://oracleapex.com/ords/r/pretius/faceted-search-with-any-region/home)查看。