我有一系列文件的重复控制,并且在同一个面板下面,但在重复控制之外,我有另一个新的绑定文档.新文档包含空白字段,但字段具有验证,在提交新文档时需要内容.
这样可行.
我在重复控件的重复输入面板上添加了一个"编辑"按钮.动作是弹出该入口编辑模式.
这是有效的 - 我可以确认重复上的各个行可以独立地在编辑模式之间切换,并且当切换时,下面的新文档不会切换.它是孤立的.
然而,
如果我在新文档上有验证代码,它会在新文档上触发(未通过验证),即使我正在切换重复中的其他绑定文档之一.
我试图确保按钮设置为部分刷新,并且仅设置为刷新重复内的单个输入面板,并且我已经尝试确保按钮仅绑定到正确的文档.
它似乎只是有争议的验证代码,因为如果我禁用它,所有切换工作正常,新文档区域不会在其目标数据库中创建一个空的新文档.
显然我错过了一些东西.有什么想法吗?
如果你想要代码,我发布了一个剥离,清理和注释版本,尽管我可以在不删除相关位的情况下完成:
<xp:repeat repeatControls="false" var="devices" id="ExistingDevicesList" rendered="true">
<xp:this.value><![CDATA[#{javascript: /* Some script that populates the repeat */ }]]>
</xp:this.value>
<xp:panel id="IndividualDevice"> <!-- ************ start of the individual device panel -->
<xp:this.data>
<xp:dominoDocument var="devDocument"
databaseName=" xxxxx.nsf" action="openDocument"
formName="device"
documentId="#{javascript:devices.getDocument().getUniversalID();}"
ignoreRequestParams="true" />
</xp:this.data>
<!-- ******************* The Edit Button ****************** -->
<xp:button value="Edit" id="button1">
<xp:this.binding><![CDATA[#{javascript:
var IndividualDevice:com.ibm.xsp.component.UIPanelEx = getComponent("IndividualDevice");
IndividualDevice}]]>
</xp:this.binding>
<xp:eventHandler event="onclick"
submit="true" refreshMode="partial"
refreshId="IndividualDevice">
<xp:this.action>
<xp:changeDocumentMode mode="edit" var="devDocument">
</xp:changeDocumentMode>
</xp:this.action>
</xp:eventHandler>
</xp:button>
<!-- ******************************************************* -->
<xp:inputText id="inputText4" value="#{devDocument.field1}" />
<xp:inputText id="inputText5" value="#{devDocument.field2}" />
</xp:panel>
</xp:repeat>
<!-- ********** below is a field and button bound to the NewDevice Document -->
<xp:inputText id="inputText3" value="#{NewDevice.field1}"
style="width:371.0px" required="false">
<xp:this.validators>
<xp:validateRequired
message="You must enter a value." />
</xp:this.validators>
</xp:inputText>
<xp:button value="submit new device" id="newDevButton">
<xp:eventHandler event="onclick" submit="true"
refreshMode="partial" immediate="false" save="true"
refreshId="NewDevicePanel" />
</xp:button>
<!-- ************************************************************************ -->
Run Code Online (Sandbox Code Playgroud)
Pau*_*ers 13
尝试将以下设置添加到"编辑"按钮:
execMode ="partial"execId ="IndividualDevice"
这将确保部分刷新仅在IndividualDevice面板上运行,因此不会运行NewDevice数据源上的验证.这对于性能也会更好,因为它减少了部分刷新处理的组件树(XPage的服务器端映射)中的元素.
我能够使用代码重现您的问题,但是当我添加上述属性时,我能够成功地在重复中切换文档.
| 归档时间: |
|
| 查看次数: |
981 次 |
| 最近记录: |