我有两个自定义控件,CustomControlBody和CustomControlTitle。
CustomControlBody有一个单选按钮。 CustomControlTitle具有基于CustomControlBody中单选按钮值的计算字段。
如果CustomControlTitle放在CustomControlBody中,那么CustomControlTitle中的计算字段可以看到CustomControlBody上的单选按钮的值就好了。
但是为了设计的灵活性,我希望能够在xPage上单独放置CustomControlTitle和CustomControlBody。但是当我这样做时,CustomControlTitle似乎无法在CustomControlBody中看到单选按钮。
如何将CustomControlBody中单选按钮的值传递给CustomControlTitle中的计算字段?
答案 0 :(得分:4)
您可以使用viewscope设置参数,在刷新时可以读取此var。另一种方法是使用构面创建自定义控件标题和正文(可编辑区域。您创建第三个控件,将这些控件放入并使用单选按钮和文本字段填充构面。类似于 (这不是生产准备好的,只是为了说明上述情况。)
<xp:view xmlns:xp="http://www.ibm.com/xsp/core"
xmlns:xc="http://www.ibm.com/xsp/custom"
xmlns:xe="http://www.ibm.com/xsp/coreex">
<xp:this.data>
<xp:dominoDocument var="yourdocument" action="editDocument"
documentId="#{javascript:return compositeData.DocumentUniqueID;}"
computeWithForm="save" formName="yourdocument">
</xp:dominoDocument>
</xp:this.data>
<xp:panel>
<xc:Title>
<xp:textxp:key="field" value="#{javascript: rb = getComponent("radiobutton"); return cb.getValue();}"/>
</xc:Title>
<xc:Body>
<xp:radioGroup id="radioGroup1" xp:key="fields">
<xp:eventHandler event="onchange" submit="true"
refreshMode="partial" refreshId="titleControl">
<xp:this.action><![CDATA[#{javascript:viewScope.value = this.getValue();}]]></xp:this.action>
</xp:eventHandler></xp:radioGroup>
</xc:Body>
</xp:panel>
</xp:view>