2010-04-15 59 views
1

我对Oracle Apex相当陌生,并且遇到问题。我们的应用程序目前有一个输入数据的方法,有几个文本框和可选的值列表。我想基于像这样在另一个文本框的信息有一个LOV:基于另一个文本框中的数据填充Oracle Apex中的LOV

select APPOINTMENT_ID PATIENT_ID from APPOINTMENT where PATIENT_ID = :P9_PAT_NUM 

其中P9_PAT_NUM是在文本框中的患者数量。但是,如果文本框已经提交,这显然只能工作,否则它假定文本框为空。

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

回答

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

0

一旦顶点4.0出来(应该很快),这将是非常简单的使用它的级联LOV功能。在此之前,你可以做以下两种方法之一:容易,但笨重,或困难,但光滑......

1)容易,但笨重的:

添加以下JavaScript的第一个项目的HTML表单元素属性:

onchange="doSubmit()" 

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

2)困难的,但华而不实:

如果LOV是一个弹出,那么你只需要得到第一个项目到会话状态,您可以通过JavaScript和Ajax做的价值。

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

我不会详细介绍这些内容,但是我发现虽然我一直在写这个Jeffrey Kemp已经发布了一些有用的链接,将会更详细地解释。

相关问题