我不能完全确认这一点:在我的情况下,它在我的测试服务器上就像一个魅力(甚至没有在本地尝试)。这是我的代码:
ComboBox #1 从同一数据库的分类视图中读取其值:
<xp:comboBox id="comboBox1" value="#{viewScope.combo1}">
<xp:selectItems>
<xp:this.value>
<![CDATA[#{javascript:@DbColumn(@DbName(), "myView", 1);}]]>
</xp:this.value>
</xp:selectItems>
<xp:eventHandler event="onchange" submit="true" refreshMode="partial" refreshId="panelC2">
</xp:eventHandler>
</xp:comboBox>
观察组合的 onchange 事件在面板上执行部分更新,该面板是组合框 #2 的容器(在您的情况下可能是缺少这个吗?)
为了解决这个问题,剩下的就是:combo#2 使用 @DbLookup 获取其值数组,该数组由组合#1 中选择的值过滤,现在存储在 viewScope 变量中(我怎么不同意 Stephan这里:使用 scope-var 让事情变得更容易!):
<xp:panel id="panelC2">
<xp:comboBox id="comboBox2" value="#{viewScope.combo2}">
<xp:selectItems>
<xp:this.value>
<![CDATA[#{javascript:@DbLookup(@DbName(), "myView", viewScope.combo1, 5);}]]>
</xp:this.value>
</xp:selectItems>
</xp:comboBox>
</xp:panel>