使用8.5.3 UP1
当我从对话框保存文档时,某些字段不会被填充。如果我从 xpage 中保存文档,它会很好地保存这些字段。下面用一个简单的例子来说明这个问题:
<xp:link text="Save Document By Dialog"
id="link21">
<xp:eventHandler event="onclick" submit="false">
<xp:this.script><![CDATA[XSP.openDialog("#{id:dialog1}");]]></xp:this.script>
</xp:eventHandler>
</xp:link>
<br/>
<xp:button value="Save By Button" id="button1">
<xp:eventHandler event="onclick" submit="true"
refreshMode="complete">
<xp:this.action>
<xp:saveDocument var="document1"></xp:saveDocument>
</xp:this.action>
</xp:eventHandler>
</xp:button>
<xe:dialog id="dialog1" title="Dialog">
<br />
<b>
<xp:text escape="true" id="computedField1">
<xp:this.value><![CDATA[#{javascript:"Save this document?"}]]></xp:this.value>
</xp:text>
</b>
<br />
<br />
<xp:button value="Yes" id="button7">
<xp:eventHandler event="onclick" submit="true"
refreshMode="complete">
<xp:this.script><![CDATA[XSP.closeDialog("#{id:dialog1}");]]></xp:this.script>
<xp:this.action>
<xp:saveDocument var="document1"></xp:saveDocument>
</xp:this.action></xp:eventHandler>
</xp:button>
<xp:button value="No" id="button8">
<xp:this.onclick><![CDATA[XSP.closeDialog("#{id:dialog1}");]]></xp:this.onclick>
</xp:button>
</xe:dialog>
<br/><br/>
<xp:inputText id="TitleTX" value="#{document1.TitleTX}"></xp:inputText>
<br/><br/>
<xp:inputRichText id="inputRichText1" value="#{document1.ProcessMapsRT}">
</xp:inputRichText>
与 xe:dialog 关联的 DOJO 进程将对话框移动到 DOM 中的另一个位置,这意味着它将失去对文档主要部分中数据源的跟踪。如果您使用 SSJS 在对话框中保存而不是简单的操作,它可能会工作得更好。
我使用自定义控件中包含的对话框取得了最大的成功,其中数据源通过复合数据传入。这样,与数据的连接就不会丢失并且仍然有效,但是,在这些情况下我仍然使用 SSJS 进行保存。
/Newbs
更新:这可能是使用 Steve Pridemore 在 NotesIn9 #42 中描述的技术的时候了(参见xpages.tv http://xpages.tv).
首先将一个新事件放入 XPage 中包含数据源的级别。
<xp:eventHandler
id="saveEventHandler"
submit="true"
save="true"
event="calledbyid"
refreshMode="complete">
</xp:eventHandler>
接下来,让对话框中的操作使用客户端 JavaScript 调用此事件:
XSP.executeOnServer('#{id:saveEventHandler}')
那“应该”做到这一点。我还没有完全测试它,但 NoteIn9 中的示例确实有效。
/Newbs
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)