根据另一个文本框中的数据在Oracle Apex中填充LOV

时间:2010-04-15 12:51:46

标签: sql oracle-apex

我对Oracle Apex相当新,并且遇到了问题。我们的应用程序目前有一种输入数据的方法,包括几个文本框和可选的值列表。我想基于另一个文本框中的信息来获得一个LOV,如下所示:

select APPOINTMENT_ID PATIENT_ID from APPOINTMENT where PATIENT_ID = :P9_PAT_NUM

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

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

2 个答案:

答案 0 :(得分:3)

在Apex版本4+中,这是一个内置功能。您只需在级联LOV父项属性中指定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

答案 1 :(得分:0)

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

1)容易但笨重:

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

onchange="doSubmit()"

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

2)困难但光滑:

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

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

我不会详细介绍这些,但我看到,在我写这篇文章时,Jeffrey Kemp发布了一些有用的链接,可以更详细地解释。