嗨,我在组合框中遇到了一些麻烦。这是一个复制/粘贴示例代码,用于演示我的问题。
<xp:this.beforeRenderResponse><![CDATA[#{javascript://
viewScope.value1 = "document.getItemValueString('value1')" + viewScope.document;
viewScope.value2 = "document.getItemValueString('value2')" + viewScope.document;}]]>
</xp:this.beforeRenderResponse>
<xp:button
value="change document"
id="button1">
<xp:eventHandler
event="onclick"
submit="true"
refreshMode="complete">
<xp:this.action><![CDATA[#{javascript: viewScope.document = new Date().getMilliseconds()//}]]></xp:this.action>
</xp:eventHandler>
</xp:button>
<br></br>
<xp:comboBox id="comboBox1" value="#{viewScope.value3}">
<xp:selectItems>
<xp:this.value><![CDATA[#{javascript:viewScope.value1;}]]></xp:this.value>
</xp:selectItems>
<xp:selectItems>
<xp:this.value><![CDATA[#{javascript:viewScope.value2;}]]></xp:this.value>
</xp:selectItems>
<xp:eventHandler
event="onchange" submit="true" refreshMode="complete">
<xp:this.action><![CDATA[#{javascript://}]]></xp:this.action>
</xp:eventHandler>
</xp:comboBox>
<br></br>
<xp:text escape="true" id="computedField1" value="#{viewScope.value1}"></xp:text>
<br></br>
<xp:text escape="true" id="computedField2" value="#{viewScope.value2}"></xp:text>
<br></br>
<xp:text escape="true" id="computedField3" value="#{viewScope.value3}"> </xp:text>
我尝试了什么:我有一个带有两个或更多计算的selectItem的组合框。它们取决于当前选择的文件。为了演示文档切换,我在本例中使用了按钮更改文档。当选择新文档时,beforeRenderResponse事件 从文档中获取itemvalues并将它们放入viewscope var中。我必须分开这两个值,所以我不能使用数组。到目前为止所有工作但是:如果我选择一个值,例如value2(timestamp1)并做一个开关文件,那么组合框绑定的viewScope.value3没有更新。 它显示上一个文档中的旧值2,直到我触发其onChange事件。
所以我的问题是如何强制comboBox用其selectItems更新其viewScope var。
答案 0 :(得分:0)
找到一个至少适用于我的copy / pase示例的解决方案:
<xp:this.beforeRenderResponse><![CDATA[#{javascript://
viewScope.value1 = "document.getItemValueString('value1')" + viewScope.document;
viewScope.value2 = "document.getItemValueString('value2')" + viewScope.document;
var list = new Array();
list.push(value1);
list.push(value2);
if(!@IsMember(viewScope.value3,list)){
viewScope.value3 = list[0];//list.pop();
}}]]>
</xp:this.beforeRenderResponse>
现在,如果文档被更改,viewScope.value3将变为value1。