0

互いに関連する 3 つのコンボボックスを含む Xpage があります。Combobox1 の onchange イベントでは、combobox2 の部分的な更新が行われます (combobox2 の dblookup のキーは、combobox1 の値であるため)。サーバーオプションとして、「データを検証または更新しない」コンボボックス2および3と同じです。次に、コンボボックスの送信された値を取得し、これらの値でドキュメントを保存するボタンがあります。問題: コンボボックス 1 の値を取得して [保存] ボタンをクリックすると、ドキュメントが保存されます。2 番目と 3 番目のボタンをクリックすると、ドキュメントを保存できなくなります。エラー メッセージも表示されません。編集 ; コードの簡略版:

<?xml version="1.0" encoding="UTF-8"?> <xp:view xmlns:xp="http://www.ibm.com/xsp/core"> <xp:br></xp:br> <xp:this.data> <xp:dominoDocument var="document1" formName="bestelbon"></xp :dominoDocument> </xp:this.data>

<xp:table>
    <xp:tr>
        <xp:td><xp:comboBox id="comboBox1" value="#{sessionScope.item}">
                                            <xp:selectItem itemLabel="Please select">
                                            </xp:selectItem><xp:selectItems id="selectItems2">
                                                <xp:this.value><![CDATA[#{javascript:@Unique(@DbColumn("product/Bestelbon.nsf","item",1));    
}]]></xp:this.value>
                                            </xp:selectItems>
                                            <xp:eventHandler event="onchange" submit="true" refreshMode="partial" refreshId="comboBox2" immediate="true">
                                            </xp:eventHandler>


                                        </xp:comboBox></xp:td>
        <xp:td><xp:comboBox id="comboBox2" value="#{sessionScope.subitem}">

                                            <xp:selectItem itemLabel="Please select">
                                            </xp:selectItem>
                                            <xp:selectItems id="selectItems3">
                                                <xp:this.value><![CDATA[#{javascript:var combo1 = getComponent("comboBox1").getSubmittedValue();
@Unique(@DbLookup("product/Bestelbon.nsf","subitem2",combo1,2));
}]]></xp:this.value>
                                            </xp:selectItems>
                                            <xp:eventHandler event="onchange" submit="true" refreshMode="partial" refreshId="comboBox3" immediate="true">
                                            </xp:eventHandler>
                                        </xp:comboBox></xp:td>
        <xp:td><xp:comboBox id="comboBox3" value="#{sessionScope.subsubitem}">
                                            <xp:selectItem itemLabel="Please select">
                                            </xp:selectItem>
                                            <xp:selectItems id="selectItems4">
                                                <xp:this.value><![CDATA[#{javascript:var combo1 = getComponent("comboBox2").getSubmittedValue();
@Unique(@DbLookup("product/Bestelbon.nsf","subsubitem2",combo1,2));
}]]></xp:this.value>
                                            </xp:selectItems>
                                        </xp:comboBox></xp:td>
        <xp:td><xp:comboBox id="comboBox4" value="#{sessionScope.optie}" defaultValue="Gratis optie">
                                        <xp:selectItems>
                                            <xp:this.value><![CDATA[#{javascript:@Unique(@DbColumn("product/Bestelbon.nsf","mogelijkheid",1));}]]></xp:this.value>
                                        </xp:selectItems>
                                    </xp:comboBox></xp:td>
        <xp:td><xp:comboBox id="comboBox5" value="#{sessionScope.combinatie}">
                                        <xp:selectItem itemLabel="Please select">
                                        </xp:selectItem>
                                        <xp:selectItems>
                                            <xp:this.value><![CDATA[#{javascript:@Unique(@DbColumn("product/Bestelbon.nsf","subsubitem",1));}]]></xp:this.value>
                                        </xp:selectItems>
                                    </xp:comboBox></xp:td>
    </xp:tr>
    <xp:tr>
        <xp:td></xp:td>
        <xp:td></xp:td>
        <xp:td></xp:td>
        <xp:td></xp:td>
        <xp:td></xp:td>
    </xp:tr>
</xp:table>
<xp:br></xp:br>
<xp:button id="button1" value="Save">
    <xp:eventHandler event="onclick" submit="true"
        refreshMode="complete">
        <xp:this.action><![CDATA[#{javascript:var combo1 = getComponent("comboBox1")
var value1= combo1.getSubmittedValue();
if (null == value1){
value1 = combo1.getValue();
}
var combo2 = getComponent("comboBox2")
var value2= combo2.getSubmittedValue();
if (null == value2){
value2 = combo1.getValue();
}
var combo3 = getComponent("comboBox3")
var value3= combo3.getSubmittedValue();
if (null == value3){
value3 = combo3.getValue();
}
var combo4 = getComponent("comboBox4")
var value4= combo4.getSubmittedValue();
if (null == value4){
value4 = combo4.getValue();
}
var combo5 = getComponent("comboBox5")
var value5= combo5.getSubmittedValue();
if (null == value5){
value5 = combo5.getValue();
}
document1.replaceItemValue("bbitem",value1);
document1.replaceItemValue("bbpsubitem",value2);
document1.replaceItemValue("bbsubsubitem",value3);
document1.replaceItemValue("bbmogelijkheid",value4);
document1.replaceItemValue("bbopmerking",value5);
document1.replaceItemValue("bbland","VF");
document1.replaceItemValue("bbproduct","NAVIX");
document1.save();
}]]></xp:this.action>
    </xp:eventHandler></xp:button></xp:view>
4

1 に答える 1

0

getComponent("comboBoxX").getSubmittedValue()送信された値を取得するには、 (。getValue()の代わりに)を使用する必要があります。

保存できない理由を理解するために、データソースの詳細が必要です。ただし、.getSubmittedValue()を使用してみて、それが役立つかどうかを確認してください。

于 2012-07-02T11:35:01.477 に答える