我正在努力解决一个奇怪的问题: 在重复控件中,我有一个带有fileupload和-download控件的自定义控件。项目名称是使用repeat的row var计算的,因此我可以为我的notes文档生成“dynamic fields”。 工作正常(上传分别显示并保存在不同的richtext项目中),文件删除按钮除外:它只能删除重复的最后一个filedownload控件中的文件。据我检查过:其他filedownloads的删除按钮尝试从重复中的最后一个项目名称中删除文件,而不是从相应的项目名称中删除。
这是我的(本帖子简化)示例代码:
的XPage:
<xp:view xmlns:xp="http://www.ibm.com/xsp/core"
xmlns:xc="http://www.ibm.com/xsp/custom">
<xp:this.data>
<xp:dominoDocument var="test" formName="answers"></xp:dominoDocument>
</xp:this.data>
<xp:repeat id="repeat1" rows="30" var="r">
<xp:this.value><![CDATA[#{javascript:var atts = new Array();
atts.push("att1");
atts.push("att2");
atts.push("att3");
return atts}]]></xp:this.value>
<xc:ccdummy fname="#{javascript:r}"></xc:ccdummy>
</xp:repeat>
<xp:button value="Save" id="button1"><xp:eventHandler event="onclick" submit="true" refreshMode="complete" immediate="false" save="true">
<xp:this.action>
<xp:saveDocument var="test"></xp:saveDocument>
</xp:this.action></xp:eventHandler></xp:button>
</xp:view>
自定义控件:
<xp:view xmlns:xp="http://www.ibm.com/xsp/core">
<xp:panel id="ccpanel">
<xp:fileUpload id="fileUpload1">
<xp:this.value><![CDATA[#{test[compositeData.fname]}]]></xp:this.value>
<xp:eventHandler event="onchange" submit="true"
refreshMode="partial" disableValidators="true" refreshId="ccpanel">
</xp:eventHandler>
<xp:eventHandler event="onclick" submit="true"
refreshMode="norefresh">
</xp:eventHandler></xp:fileUpload>
<xp:fileDownload rows="30" id="fileDownload1"
displayLastModified="false" hideWhen="true"
allowDelete="true">
<xp:this.value><![CDATA[#{test[compositeData.fname]}]]></xp:this.value><xp:eventHandler event="onclick" submit="true"
refreshMode="norefresh">
</xp:eventHandler>
</xp:fileDownload>
</xp:panel></xp:view>
答案 0 :(得分:3)
将选项repeatControls="true"
添加到重复控件中。
确保重复控制中的每个嵌入式自定义控件都是单独创建的,并且独立运行。
我用你的例子测试了它:
repeatControls="false"
:只有上次下载控件的附件才可以
被删除repeatControls="true"
:可以删除所有下载控件中的附件