【发布时间】:2015-08-18 01:35:36
【问题描述】:
我正在使用 Apex 4.2 和 Oracle XE 11G。
我有一个相当复杂的页面,但创建了一个简化版本并将其导入 apex.oracle.com,希望有人能提出问题。
请注意,由于我删除了部分,设计可能看起来有点奇怪,但我认为这应该是可能的。
该设计使用移动主题,因为它将在桌面或移动设备上执行,我希望只需要构建一个。似乎移动主题在桌面上使用时存在一些问题,因此以后可能仍需要构建另一个 GUI,但目前,我只是将移动主题用于桌面和移动。
我在页面上有两个元素,一个实例类型和一个版本。这些最终将被隐藏,但是是文本字段,可以查看正在发生的事情。 我还为每个实例类型设置了一个区域,其中包含一个包含该实例版本的下拉列表。
如果将实例定义为主版本,则可以使用其他版本有一定的限制。这些关系在名为VERSION_LINKS 的表中定义。
另一个表保存客户端可以访问的版本。
我创建了一个动态操作,这样对主版本的更改将导致更新P1_PRIMARY_VERSION。该字段在实际应用中用于有条件地显示实例组合。
此更新运行良好。
问题是,该字段在第二个 SELECT LIST (P1_RESTRICTED) 的 SQL 中使用,因此应该更新以反映来自 VERSION_LINKS 的有效版本,但相反,当 @ 987654327@选择列表已更改。
我已经创建了三种方法来解决这个问题,apex.oracle.com 上的应用程序反映了这三种方法。
- a) 对
P1_PRIMARY_VERSION的更改使用刷新动态操作来刷新P1_RESTRICTED - b) 在
P1_RESTRICTED上使用级联LOV,父项设置为P1_PRIMARY_VERSION - c) 对
P1_PRIMARY_VERSION的更改使用设置值动态操作将P1_RESTRICTED的值设置为它已有的SQL。
这些都不会导致刷新列表P1_RESTRICTED。
P1_RESTRICTED的SQL是这样的
select vc.version name, vc.version id
from version_client vc, version_links vl
where vl.name=:P1_PRIMARY_INSTANCE
and vl.version=:P1_PRIMARY_VERSION
and vl.certified_version= vc.version
and vl.certified_with=vc.name
and vc.client_id='DMO'
and vc.name='TWO'
order by vc.version desc;
并使用以下值运行它会给出正确的答案
select vc.version name, vc.version id
from version_client vc, version_links vl
where vl.name='ONE'
and vl.version='1.0'
and vl.certified_version= vc.version
and vl.certified_with=vc.name
and vc.client_id='DMO'
and vc.name='TWO'
order by vc.version desc;
同时显示 1.1.6
select vc.version name, vc.version id
from version_client vc, version_links vl
where vl.name='ONE'
and vl.version='1.1'
and vl.certified_version= vc.version
and vl.certified_with=vc.name
and vc.client_id='DMO'
and vc.name='TWO'
order by vc.version desc;
显示 1.1.7
我的猜测是它与会话状态有关,即即使屏幕版本显示 P1_PRIMARY_VERSION 发生变化,但它以某种方式丢失了导致第二个选择列表空白的值。
任何有关如何解决此问题的建议表示赞赏。提前致谢 特雷弗。
工作区:TESTA
用户名:tester
密码:tester
申请网址:https://apex.oracle.com/pls/apex/f?p=35690:LOGIN_JQM_SMARTPHONE::::::
开发者网址:https://apex.oracle.com/pls/apex
这与使用 ajax 从另一个顶点列表刷新一个顶点列表不是同一个问题。在这种情况下,用户正在触发更改并且效果很好。
我试图让用户在列表中进行更改,然后使用 ajax 更新文本字段,并且此文本字段上的另一个 ajax 事件应该触发第二个列表的刷新。这样做的原因与在页面上显示几个区域之一有关,但使用相同的单个文本字段来刷新所有这些区域,因此仅直接刷新另一个列表中的一个列表并不能解决这种情况下的问题。从 apex.oracle.com 上的示例中可能不清楚,因为我已尝试将其减少到最低限度以显示问题。 TIA。
【问题讨论】:
标签: ajax plsql oracle-apex