我对Oracle Apex相当新,并且遇到了问题。我们的应用程序目前有一种输入数据的方法,包括几个文本框和可选的值列表。我想基于另一个文本框中的信息来获得一个LOV,如下所示:
select APPOINTMENT_ID PATIENT_ID from APPOINTMENT where PATIENT_ID = :P9_PAT_NUM
其中P9_PAT_NUM是文本框中的患者编号。但是,这显然只有在文本框已经提交时才有效,否则它假定文本框为空。
有没有办法让这个工作与LOV,或者其他一些方法?
答案 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发布了一些有用的链接,可以更详细地解释。