如何在Apex中动态更新文本框?

use*_*906 2 sql database oracle ajax oracle-apex

例如

  • 我有一个下拉框,可以从桌子上找到一个小镇
  • 我想在它下面的文本框中找到选择城镇时的县.

它将从表中查看

例如,表格看起来像这样,所以使用townID它应该能够找到该县.

TownID || Town || County ||
Run Code Online (Sandbox Code Playgroud)

谢谢

Ton*_*ews 7

这是一个使用DEPT表的简单示例:演示页面.

从列表中选择DEPTNO时,相关的DNAME值将显示在文本字段中.这是使用如下定义的"高级"动态动作完成的:

动态操作属性

"真实行动"的定义如下:

这通过执行AJAX往返运行select语句来工作.请注意,我们需要告诉Apex提交P25_DEPTNO字段的当前值,以便它返回正确的数据.

UPDATE

当然,在可能的情况下,最好避免使用AJAX,因为每个操作都涉及到服务器的往返.在这种情况下,可以通过将所有必需数据放入选择列表返回值然后在客户端上解析它来避免它.要做到这一点,你可以像这样定义选择列表LOV:

select deptno d, deptno||':'||dname r
from dept
order by 1
Run Code Online (Sandbox Code Playgroud)

然后使用动态操作,该动作使用Javascript表达式来解析返回值并填充其他项:

Javascript表达式来设置值

当然,选择列表不再返回(仅)DEPTNO值,因此如果我需要值(我可能会这样做),我还需要将其解析为单独的字段.这需要动态动作定义中的第二个True Action.

结果(参见新的演示版)不使用AJAX,因此效率更高,但代码更复杂 - 您需要了解一点Javascript.此外,您可能需要处理其中一个数据值包含您选择的分隔符(我的示例中为冒号)的情况.

哪种方式取决于您的具体情况:如果相关数据的获取成本很高(例如使用复杂的函数调用),最好使用AJAX方法,只在真正需要时获取数据; 但是,如果预先获得它是便宜的,那么往返的节省可能是值得的.