使用jquery阻止项目但刷新页面后丢失该值

时间:2011-10-24 10:41:14

标签: oracle-apex

在向表中添加值后,我使用动态操作阻止了一个选择列表(在使用jquery命令('#P987_X').attr("disable", true);刷新之后),因此我有一个提交操作的按钮,提交后将其转到同一页面只有使用该新值实现的报告。

我的问题是,当它在提交后加载页面时它会阻止选择列表但是丢失了我选择的值并且我正在进行分支“分支前保存状态”

如果我不阻止该项目,它会做正确的事情并且不会失去价值。

1 个答案:

答案 0 :(得分:3)

这是HTML表单的一项功能,而不是特定于Apex:提交表单时不会提交已禁用项目的值。解决方法是在禁用项目时将项目的值复制到另一个隐藏项目中,然后在提交页面时将隐藏项目的值复制到禁用项目中。

我创建了解决方案here on apex.oracle.com的演示。它的工作原理如下:

产品

  • P19_SELECT是选择列表。仅当会话状态中的当前值为空时,source value设置为&P19_SAVE.source used
  • P19_NUM控制是选择列表是启用还是禁用:当P19_NUM = 0时启用P19_SELECT,否则禁用。默认值为0.
  • P19_SAVE用于保存P19_SELECT的值。它可能是一个隐藏的项目,我已将其显示为演示目的。

过程

按下提交按钮后,将运行以下PL / SQL页面提交过程:

:p19_num := :p19_num+1;
:p19_save := nvl(:p19_select,:p19_save);

第一个语句使计数器递增以禁用P19_SELECT,第二个语句将P19_SELECT的当前值保存到P19_SAVE。

动态行动

有一个动态操作定义如下:

  • 当事件:页面加载
  • 条件无
  • 条件类型:表达式1中的项目/列的值!=表达式2
  • 表达式1:P19_NUM
  • 表达式2:0
  • 真实行动:
    • 操作:禁用
    • 选择类型:项目
    • 项目:P19_SELECT
    • 页面加载时触发:已选中
  • 错误行动:(无)

重置按钮清除缓存,因此P19_NUM返回0.