我在“120 - 机场分面搜索”页面上使用 ORACLE APEX“示例地图”示例。 我需要从 Facet“P120_STATE”(它是一个复选框组)获取选中的选项,并将此选中的值放入名为“CHECKED_STATES”的文本项中。 我不知道如何获取此方面复选框组中的选中值。 我需要获取这些检查值以在另一个 SQL 命令中使用,例如:
select CITIES.ID as ID, CITIES.NAME as NAME, CITIES.STATE_CODE as STATE_CODE from CITIES CITIES where STATE_CODE IN ( :CHECKED_STATES )
APEX 在后台存储复选框组中选定值的方式是创建一个隐藏的输入字段,其值是您在分面搜索的Identification下给出的值。
P120_STATE里面有什么?
在页面项
P120_STATE
内,您的值将是一个冒号分隔的字符串。如果您的复选框选项选择了值 1、2、3,它将显示为:1:2:3
现在怎么办?
然后,您需要将冒号分隔的字符串转换为子查询或表达式列表,您可以在 IN 子句中处理它们。例如,下面我将把冒号分隔的字符串转换为查询。
select * from table(apex_string.split(:P120_STATE, ':'))
从这里,我可以使用 IN 子句将上述内容包含在我的原始查询中。例如,(忽略您的额外页面项目)
select
CITIES.ID as ID,
CITIES.NAME as NAME,
CITIES.STATE_CODE as STATE_CODE
from CITIES CITIES where STATE_CODE
IN ( select * from table(apex_string.split(:P120_STATE, ':')) )
如果没有更新:
这是一个单独的问题,但我将提供一个完全有效的答案。对分面搜索 (P120_STATE) 进行更改后,您需要添加动态操作。
在动态操作下,选择更改。选择项目。在 Item(s)
下设置
P120_STATE
在操作下,添加一个 TRUE 操作,它将为您的页面项目设置值
CHECKED_STATES
。
对于您的查询,您需要在
要提交的页面项目下传递
CHECKED_STATES