0

xpages を書いています。

詳細: コンボボックス A,B の 2 つがあります。コンボボックス A で @Dbcolumn を使用して、notesview からオプション データを取得し、A から取得した選択肢をスローして、B の 2 番目のデータを取得します。

問題は、私のローカル サーバーでは問題なく動作しますが、サーバーでは結果が得られないことです。

どんな提案でも大歓迎です、ありがとう!!

コードは次のようにサーバー側にあります:</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

私はこれを完全に確認することはできません:私の場合、それは私のテストサーバー上の魅力のように機能します(ローカルでさえ試しませんでした)。これが私のコードです:

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を使用して値の配列を取得します。この配列は、combo#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 に答える
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 に答える