如何在Oracle APEX 21中将父子表转换为树形区域?
解决方案:构建Oracle APEX 21树形区域所需的父子结构数据
核心要求
Oracle APEX树形区域的数据源必须包含三个核心字段:
- 全局唯一ID:区分每个节点
- 父节点ID(PARENT_ID):建立层级关联,根节点的该字段设为
NULL或0 - 节点显示文本(TEXT):展示节点的可读信息
构造符合要求的SQL查询
结合你的订单与订单行表结构,用UNION ALL合并两层节点数据,同时保证ID全局唯一:
-- 根节点:订单数据 SELECT 'O_' || o.Id AS ID, NULL AS PARENT_ID, '订单号: ' || o.Order_number || ' (' || TO_CHAR(o.Order_date, 'YYYY-MM-DD') || ')' AS TEXT, o.Id AS ORDER_ID, NULL AS LINE_ID, NULL AS ITEM_NUMBER, NULL AS QTY FROM orders o UNION ALL -- 子节点:订单行数据 SELECT 'L_' || l.Line_id AS ID, 'O_' || l.Order_id AS PARENT_ID, '物料号: ' || l.Item_number || ' | 数量: ' || l.Qty AS TEXT, l.Order_id AS ORDER_ID, l.Line_id AS LINE_ID, l.Item_number AS ITEM_NUMBER, l.Qty AS QTY FROM order_lines l ORDER BY ORDER_ID, LINE_ID;
关键说明
'O_' || o.Id与'L_' || l.Line_id:通过前缀区分订单和订单行节点,避免不同层级ID冲突- 根节点
PARENT_ID设为NULL,APEX会自动识别为顶层节点 TEXT字段可根据业务需求自定义格式,提升节点可读性- 保留
ORDER_ID、LINE_ID等字段,方便后续添加节点交互逻辑(如跳转详情页)
APEX树形区域配置步骤
- 在目标页面创建树形区域
- 将上述SQL设置为区域的数据源
- 在树形属性中指定:
- ID列:选择查询结果中的
ID字段 - 父ID列:选择
PARENT_ID字段 - 文本列:选择
TEXT字段
- ID列:选择查询结果中的
- 按需配置额外属性(如默认展开层级、节点图标、点击事件等)
内容的提问来源于stack exchange,提问作者John Smith
相关产品推荐
相关产品推荐

