ComboBox onBlur使用函数刷新其他ComboBox的值

时间:2014-06-02 22:17:08

标签: xpages

我有一个包含5个字段的xpage。每个字段都有onBlur事件中的代码,用于刷新其下方的ComboBox的值。我现在必须为此应用程序添加更多字段,并且我不想为每个字段编写刷新代码。相反,我想创建一个函数,该函数接受我所在的字段的参数并用循环进行刷新。

我似乎无法让它发挥作用。以下是我在onBlur事件中使用的代码。我不知道将此代码放在脚本库中的语义,脚本库可以访问每个组合框并在循环中调用刷新代码。

有什么想法吗?

<xp:comboBox id="vendorAppAdvSkills1">
<xp:selectItem itemLabel="-Select a Category-"
itemValue="-Select a Category-"></xp:selectItem>
<xp:selectItems>
<xp:this.value><![CDATA[#{javascript:getComponent( "vendorAppSkills1" ).getValue();}]]></xp:this.value>
</xp:selectItems>
<xp:eventHandler event="onblur" submit="false">
<xp:this.script><![CDATA[
XSP.partialRefreshPost("#{id:panelVendorAppSkills2}", 
{ 
onComplete: function() 
{ 
XSP.partialRefreshPost("#{id:panelVendorAppSkills3}",
{ 
onComplete: function() 
{ 
XSP.partialRefreshPost("#{id:panelVendorAppSkills4}",
{ 
onComplete: function() 
{ 
XSP.partialRefreshPost("#{id:panelVendorAppSkills5}",
{ 
onComplete: function() 
{ 
XSP.partialRefreshPost("#{id:panelNextFinish}",
{ 
} )
}
} )
}
} )
}
} )
}
} );]]></xp:this.script>
</xp:eventHandler>
</xp:comboBox>

1 个答案:

答案 0 :(得分:0)

您对XPage有验证吗?如果是这样,验证将阻止任何部分刷新运行。

如果可能,只需将eventHandler的刷新ID设置为包含所有组合框的区域。这只会从浏览器调用一次部分刷新到服务器。

使用当前代码,您将调用5次部分刷新,每次将浏览器的全部内容发布到服务器,每次更新整个页面,但只是推回单个组件。性能不会很好,因此单个刷新区域是更好的练习(以及更容易编码!)。

作为最佳实践,除非您阻止验证,否则还要确保刷新区域包含“显示错误”控件。否则,您的用户(包括您在测试时)将不知道验证是否失败。