实现这个功能的时候要注意2点:
1、 保持dataset中数据的version同数据库一致,以保证能够再次更新:
1) 保存成功之后,可以选择带回id重新刷新dataset
2) 或者直接带回id、version、CREATED_BY、CREATION_DATE置回dataset。(这里要注意CREATED_BY、CREATION_DATE在添加操作之后也要回置)
2、 保存完附件之后如何让附件区域刷新(这个是重点)。要实现这个功能,需要改变一下我们页面的结构:
1) managet页面引一个iframe:
<div id="filesDiv" style="display: ininle; overflow: hidden; ">
<iframe name="attachFrame" id="attachFrame" src="oa_user_mail_attach.jsp" width="100%" marginheight="0" marginwidth="0" frameborder="0"></iframe>
</div>
2) 将原来manager页面上的form放到新的页面oa_user_mail_attach.jsp上。
3) 要注意oa_user_mail_attach.jsp页面上要用如下代码区分出是添加操作还是修改操作。
<%
if(attachId != "" && attachId != null){
%>
new AttachFileView("OA_USERMAIL","<%=attachId%>",true);
var file = new AttachFileAdd();
<%
}else{
%>
var file = new AttachFileAdd();
<%
}
%>
4) 在附件上传成功之后刷新下iframe:
attachId = datasetUserMail.getValue("MID"); attachFrame.window.location="oa/module/pi/userMail/oa_user_mail_attach.jsp?attachId="+attachId;
这里只大概列出了关键操作,还有些细节需要注意。
如何实现定时保存功能
进而,如果需要做到定时自动保存,可在页面上添加如下javascript:
<script type="text/javascript">
window.setInterval("autoSave();",60000);
function autoSave(){
commandSaveTemple.execute();
}
</script>
实现这个功能需要注意:
如果想实现定时保存,那么在处理数据保存成功之后的version问题时,就不用采用上面的方法1),因为在后台执行保存的同时,页面数据仍在修改,如果保存后根据回带的id重新刷新dataset会造成数据的损失。