设为首页 收藏本站
查看: 1084|回复: 0

[经验分享] SharePoint:扩展DVWP

[复制链接]

尚未签到

发表于 2015-9-28 14:21:07 | 显示全部楼层 |阅读模式
  通过前面的学习,我们已经掌握了如何在DVWP中使用PreSaveAction(),并利用jQuery协助我们创建了一些变量,接下让我们将变量的值写到审计列表中。

使用SharePoint Web服务新建审计记录
  Marc的库中的UpdataListItems为我们提供了一种快速记录审计跟踪信息变更的方式。
  首先把老的域值(或者说是表单本身的值)作一个记录...



$().SPServices({
operation: "UpdateListItems", // 下面的Cmd决定了要进行插入操作
async: false,
listName: "FTE Change Audit", // 我之前创建好的审计列表的显示名称
updates: "<Batch OnError='Continue' PreCalc='TRUE'>" +
"<Method ID='1' Cmd='New'>" +
"<Field Name='FromTo'>From</Field>" + // Field Name 为该列表栏的 'Static Name'
"<Field Name='Title'>" + txtOldName + "</Field>" +
"<Field Name='Location'>" + txtOldLoc + "</Field>" +
"<Field Name='Group'>" + txtOldGrp + "</Field>" +
"<Field Name='Position'>" + txtOldPos + "</Field>" +
"<Field Name='WorkShift'>" + txtOldShift + "</Field>" +
"<Field Name='FTE'>" + txtOldFTE + "</Field>" +
"<Field Name='EffDate'>" + txtEffDate + "</Field>" +
"<Field Name='ChangeType'>" + txtChangeType + "</Field>" +
"</Method>" +
"</Batch>",
completefunc: function(xData, Status) {
}
});
  ...然后,为所有的新(或修改后)纪录重复以上过程。修改FromTo的值为To;注意到我们在这两个过程中使用相同的EffDate(你的需求或许不同)。ChangeType可以自动设置或者基于已有的一些变更计算出来。

现在合在一起
  尽管你写的代码可能根据你的需求进行了修改,但是到目前为止大致上我们的PreSaveAction()的样子如下所示:



  function PreSaveAction() {
var txtChangeType = "Update";
var txtNewName = $("input[name*=$ff1_]").val();
var txtOldName = $("span[id*=_ff9_]").text();
var txtNewPos = $("input[name*=$ff3_]").val();
var txtOldPos = $("span[id*=_ff11_]").text();
var txtNewShift = $("select[name*=$ff4_]").val();
var txtOldShift = $("span[id*=_ff12_]").text();
var txtNewFTE = $("input[name*=$ff5_]").val();
var txtOldFTE = $("span[id*=_ff13_]").text();
var txtNewGrp = $("input[name*=$ff2_]").val();
var txtOldGrp = $("span[id*=_ff10_]").text();
var txtNewLoc = $("input[name*=$ff6_]").val();
var txtOldLoc = $("span[id*=_ff14_]").text();
var txtEffDate = $("input[name*=$ff7_]").val();
$().SPServices({
operation: "UpdateListItems",
async: false,
listName: "FTE Change Audit",
updates: "<Batch OnError='Continue' PreCalc='TRUE'>" +
"<Method ID='1' Cmd='New'>" +
"<Field Name='FromTo'>From</Field>" +
"<Field Name='Title'>" + txtOldName + "</Field>" +
"<Field Name='Location'>" + txtOldLoc + "</Field>" +
"<Field Name='Group'>" + txtOldGrp + "</Field>" +
"<Field Name='Position'>" + txtOldPos + "</Field>" +
"<Field Name='WorkShift'>" + txtOldShift + "</Field>" +
"<Field Name='FTE'>" + txtOldFTE + "</Field>" +
"<Field Name='EffDate'>" + txtEffDate + "</Field>" +
"<Field Name='ChangeType'>" + txtChangeType + "</Field>" +
"</Method>" +
"</Batch>",
completefunc: function(xData, Status) {
}
});
$().SPServices({
operation: "UpdateListItems",
async: false,
listName: "FTE Change Audit",
updates: "<Batch OnError='Continue' PreCalc='TRUE'>" +
"<Method ID='1' Cmd='New'>" +
"<Field Name='FromTo'>To</Field>" +
"<Field Name='Title'>" + txtNewName + "</Field>" +
"<Field Name='Location'>" + txtNewLoc + "</Field>" +
"<Field Name='Group'>" + txtNewGrp + "</Field>" +
"<Field Name='Position'>" + txtNewPos + "</Field>" +
"<Field Name='WorkShift'>" + txtNewShift + "</Field>" +
"<Field Name='FTE'>" + txtNewFTE + "</Field>" +
"<Field Name='EffDate'>" + txtEffDate + "</Field>" +
"<Field Name='ChangeType'>" + txtChangeType + "</Field>" +
"</Method>" +
"</Batch>",
completefunc: function(xData, Status) {
}
});
return true;
};
其他用途
  你可以通过PreSaveAction()做什么?
  1、栏验证 - 确保你即将写入到数据库中的数据满足一些要求,比如:
  i.结束日期在起始日期后面
  ii.一个时间段内至少包含x天(或这说天数大于x天)
  iii.某个人已经在某个列表中(或在某个列表中不存在)
  iv.如果一些可选字段在某些字段填写后会变成必填字段
  v.等等
  2、添加“您的意思是...?”功能
  i.“...要进行修改,但是并不更新有效日期?”
  ii.“...要在以后再设置这个日期?”
  iii.“...找的是这个名子与此很接近的人?”
  iv.“...指这个转换后的结果?或者是指这个最终结果?”
  v.等等
  3、需要做审计跟踪
  4、确认是否要删除
  5、查找存储在该列表项中的信息
  5、其他你的创意...

想了解更多应用场景?
  不妨搜索一下PreSaveAction(),看看其他博文作者有什么好的想法。
  
  下一次:如何在DVWP中使用用户自定义的下拉列表框?网上有些最佳实践,不论你是不是在用DVWP都可能会用到。但如果你需要在你的DVWP中使用级联下拉框,那么你需要提前进行规划。我们将开始着手这一规划,并指出其中可能存在的一些陷阱。
  从现在开始接下来的4篇文章中,我们将在DVWP中实现级联下拉列表框功能。相应列表的所有者将在SharePoint列表中管理其内容和相互之间的关系。
  
  参考资料
  SharePoint:Extending the DVWP- Part 14:Putting PreSaveAction() to Work with jQuery

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-120095-1-1.html 上篇帖子: SharePoint—用REST方式访问列表 下篇帖子: 【求助,已经解决】未能注册sharepoint服务。已引发类型为SYSTEM.ARGUMENTEXCEPTION异常,其他异常信息,加密和解密过程中出错,系统错
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表