Xpages @Dblookup在服务器上不起作用

时间:2012-07-18 03:24:05

标签: xpages xpages-ssjs

我写了一个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;

2 个答案:

答案 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>