0

我写了一个xpages。

详细信息: 有两个组合框A,B。我在组合框 A 上使用 @Dbcolumn 从 notesview 获取选项数据,然后我将抛出从 A 获得的选项以获取 B 的第二个数据。

问题是:它在我的本地服务器上运行良好,但在服务器上没有结果。

如果有任何建议,我将不胜感激,谢谢!!

服务端代码如下:</p>

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;
4

2 回答 2

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"]

那应该工作

于 2012-07-18T05:32:09.123 回答
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 事件在面板上执行部分更新,该面板是组合框 #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>
于 2012-07-18T09:38:33.530 回答