1

我对 Oracle Apex 还很陌生,遇到了问题。我们的应用程序目前有一种输入数据的方法,带有几个文本框和可选的值列表。我想有一个基于另一个文本框中的信息的 LOV,如下所示:

select APPOINTMENT_ID PATIENT_ID from APPOINTMENT where PATIENT_ID = :P9_PAT_NUM

其中 P9_PAT_NUM 是文本框中的患者编号。但是,这显然只有在文本框已经提交时才有效,否则它假定文本框为空。

有没有办法让这个工作与 LOV 一起工作,或者其他方法?

4

2 回答 2

3

在 Apex 版本 4+ 中,这是一个内置功能。您只需在Cascading LOV Parent Item(s)属性中指定 LOV 所依赖的项目。

在版本 4 之前,有许多可用的解决方案 - 谷歌“Apex 级联 LOV”,您会发现一些涉及一些工作的解决方案,例如:

Javascript: http: //www.inside-oracle-apex.com/generic-solution-for-cascading-select-listslovs/

ApexLib: http ://one-size-doesnt-fit-all.blogspot.com/2007/10/apex-cascading-lovs-revisited.html

使用 ExtJS: http ://application-express-blog.e-dba.com/?tag=apex-cascading-lov

于 2010-04-15T13:16:00.100 回答
0

一旦 Apex 4.0 出现(应该很快),使用它的级联 LOV 功能将非常简单。在此之前,您可以通过以下两种方式之一进行操作:简单但笨拙,或困难但光滑......

1)简单但笨重:

将以下 Javascript 添加到第一项的 HTML 表单元素属性中:

onchange="doSubmit()"

这将在第一项更改时提交页面,因此当它重新加载时,该项目的当前值将用于填充 LOV。我说它“笨拙”是因为整个页面重新加载(慢),并且光标移回起始位置。

2)困难但光滑:

如果您的 LOV 是一个弹出窗口,那么您只需将第一项的值获取到会话状态,您可以通过 Javascript 和 AJAX 来完成。

如果您的 LOV 是一个选择列表,那么您需要使用 Javascript 和 AJAX 动态重新填充选择列表。

我不会详细介绍这些内容,但我看到,当我写这篇文章时,Jeffrey Kemp 已经发布了一些有用的链接,这些链接将更详细地解释。

于 2010-04-15T13:19:42.107 回答