如何在Oracle APEX树形区域各节点末尾添加按钮并实现弹窗添加子节点?
在Oracle APEX树形区域节点添加+按钮实现子节点新增功能
步骤1:修改树形区域节点模板,插入+按钮
找到你的树形区域对应的节点模板(可在共享组件→模板→树形模板中查找,或直接在树形区域属性→外观→节点模板查看),编辑模板的「节点」部分,在节点文本末尾添加带父节点ID标识的按钮:
<span>#NODE_LABEL#</span> <button class="t-Button t-Button--icon t-Button--small btn-add-child" data-parent-id="#ID#"> <span class="t-Icon fa fa-plus" aria-hidden="true"></span> </button>
#ID#是树形节点的主键字段(确保树形区域的SQL查询包含该字段)data-parent-id用来存储当前节点ID,后续传递给新增表单;按钮用APEX内置样式类保证界面风格统一
步骤2:创建新增子节点的模态对话框页面
- 新建页面,类型选择「模态对话框」
- 在对话框页面搭建表单,包含子节点所需输入字段,再添加一个隐藏页面项(比如
PXX_PARENT_ID,XX为对话框页面编号),用于接收父节点ID - 配置表单提交逻辑,将隐藏项
PXX_PARENT_ID作为新节点的父ID插入数据库
步骤3:给+按钮绑定点击事件,传递父ID并打开对话框
在树形区域所在页面创建动态动作:
- 事件:点击
- 选择器:
.btn-add-child(与步骤1中按钮的class对应) - 动作:打开对话框
- 对话框页面:选择刚创建的模态对话框页面
- 设置页面项:添加一行,将
PXX_PARENT_ID的值设为$(this.triggeringElement).data('parent-id')(获取按钮上存储的父节点ID) - 勾选「关闭后刷新」,选择树形区域的静态ID(需先给树形区域设置静态ID,比如
TREE_REGION)
步骤4:完善对话框保存与刷新逻辑
在对话框页面的提交按钮上,设置提交成功后:
- 关闭模态对话框
- 触发树形区域刷新(若动态动作已设置关闭后刷新,此步骤可省略)
替代方案:用页面内区域作为对话框
若不想新建页面,可在当前页面创建模态区域(区域类型设为「模态对话框」):
- 给模态区域设置静态ID,默认隐藏
- 给+按钮绑定动态动作:点击时显示模态区域,同时将父节点ID赋值给隐藏页面项
- 表单提交后,执行刷新树形区域、隐藏模态区域的动作
内容的提问来源于stack exchange,提问作者Divya Rose
相关产品推荐
相关产品推荐

