0

我有一个带有 3 个相互关联的组合框的 Xpage。在 Combobox1 的 onchange 事件中,我对 combobox2 进行了部分刷新(因为 combobox2 的 dblookup 的键是 combobox1 的值)。作为服务器选项,我有“不验证或更新数据”与组合框 2 和 3 相同。然后我有一个按钮,它将获取组合框的提交值,并使用这些值保存文档。问题:当我为 combobox1 选择一个值并单击“保存”按钮时,一个文档被保存。当我单击第二个和第三个按钮时,我无法再保存文档......我也没有收到任何错误消息。编辑 ; 代码的简化版本:

<?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 回答