我写了一个xpages。
细节:有两个组合框A,B。我在组合框A上使用@Dbcolumn从notesview获取选项数据,我将从A获得选择以获得B的第二个数据。
问题是:它在我的本地服务器上运行良好,但在服务器上没有结果。
我会非常感谢任何建议,谢谢你!
代码在服务器端如下:
var fd_AppChoice:com.ibm.xsp.component.xp.XspSelectOneMenu = getComponent("fd_AppChoice");
var AppChoice=@Trim(fd_AppChoice.getValue());
var temp=new Array();
temp=@DbLookup("","(A)",AppChoice,2);
return temp;
答案 0 :(得分:1)
该代码看起来不正确 - 您没有服务器。定义变量不会修复其数据类型,因此var temp=new Array();
无关紧要。我还想将fd_AppChoice绑定到范围变量,例如viewScope.appChoice
,然后您的代码变得更容易。试试这个:
var appChoice = @Trim(viewScope.appChoice); // Use getComponent.getValue if you have to
var server = @DbName();
// if different server or nsf have = ["myserver","mydb.nsf"] or [@DbName()[0],"my.nsf"]
var result = @DbLookup(server,"(A)",appChoice,2);
return result || ["Sorry nothing here"]
那应该有用
答案 1 :(得分:1)
我无法证实这一点:在我的情况下,它就像我的测试服务器上的魅力(甚至不在本地尝试)。这是我的代码:
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事件对面板进行部分更新,该面板是comboBox#2的容器(可能是你的情况下缺少这个吗?)
为了解决这个问题,剩下的就是:组合#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>