咨询:Oracle APEX中不使用JavaScript实现带条件确认的重置按钮
咨询:Oracle APEX中不使用JavaScript实现带条件确认的重置按钮
嘿,这个需求绝对能搞定!不用JavaScript的话,咱们完全可以靠Oracle APEX自带的组件和内置功能来实现,我给你把步骤拆得明明白白:
第一步:先建个隐藏页面项跟踪修改状态
创建一个隐藏类型的页面项,比如P1002_IS_CHANGED,保存类型选仅会话状态。然后给它加个计算:- 计算类型:PL/SQL表达式
- 计算值:
CASE WHEN APEX_UTIL.GET_CHANGED_COLUMNS IS NOT NULL THEN 'Y' ELSE 'N' END - 计算时机:每次请求
这个项会自动检测表单里所有开启了保存会话状态的字段,只要有修改就设为'Y',没修改就是'N',完美帮咱们判断状态。
第二步:创建两个重置按钮(切换显示)
咱们需要两个功能不同的按钮,让它们根据P1002_IS_CHANGED的值自动切换显示,用户看起来就像只有一个按钮:- 直接重置按钮(无确认)
- 按钮名称:
BTN_RESET_DIRECT - 行为:重置
- 显示条件:服务器端条件,表达式为
P1002_IS_CHANGED = 'N' - 样式和位置:和你想要的重置按钮保持一致
- 按钮名称:
- 带确认的重置按钮
- 按钮名称:
BTN_RESET_CONFIRM - 行为:提交页面
- 请求:
RESET_FORM_CONFIRMED - 提交时确认:勾选,确认消息填
&P1002_CONF_MESSAGE.(这样会直接引用你设置的确认文本项) - 显示条件:服务器端条件,表达式为
P1002_IS_CHANGED = 'Y' - 样式和位置:和第一个按钮完全相同,确保用户看不到切换痕迹
- 按钮名称:
- 直接重置按钮(无确认)
第三步:添加重置分支
创建一个页面分支,处理带确认按钮的提交请求:- 分支类型:重置页面状态
- 当请求等于:
RESET_FORM_CONFIRMED - 分支顺序:设为10(确保优先执行)
最后给你个关键提醒:所有需要被检测修改状态的表单字段,一定要把保存会话状态属性设为「是」,不然APEX_UTIL.GET_CHANGED_COLUMNS会检测不到它们的修改哦。
内容来源于stack exchange
相关产品推荐
相关产品推荐

