我有一个X页面,其中有3个组合框彼此相关。 在Combobox1的onchange事件中,我有一个部分刷新的combobox2(因为combobox2的dblookup的键是combobox1的值)。作为服务器选项,我有“不验证或更新数据” 与combobox2和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>
答案 0 :(得分:0)
要获取提交的值,您必须使用getComponent("comboBoxX").getSubmittedValue()
(而不是.getValue())。
我需要更多数据源的详细信息,以便了解您无法保存的原因。但是尝试使用.getSubmittedValue()并查看它是否对您有帮助。