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

[经验分享] SharePoint:扩展DVWP

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2015-9-29 12:40:41 | 显示全部楼层 |阅读模式
  在这一系列之前的部分,我们讨论过最基本的在保存操作提交前做些事情——PreSaveAction(),该函数被默认的NewForm和EditForm表单中的“确定”按钮所调用。我们实现了在DVWP中对该函数的调用,接下来我们将利用这一技巧,进一步使其在用户填写完信息但尚未提交到数据库时执行。

在内容编辑器(CEWP)里编写代码
  你可以把PreSaveAction() JavaScript内容在SharePoint Designer(SPD)里直接添加到页面中。如果是在你的整个项目中进行实现,你还可以将其添加到母版页上。但是,通常我们是通过一个内容编辑器WebPart(CEWP)添加此类代码。
  现在,让我们开始在CEWP中添加我们的函数:
  1、点击“网站操作”->“编辑页面”
DSC0000.png
  2、在我们添加好的CEWP上,点击“编辑”->“修改共享Web部件”
DSC0001.png
  3、在右侧的属性面板中,点击“源编辑器...”
DSC0002.png
  4、如果你打算使用jQuery和/或SPService JavaScript库(这两个我们在后面都会用)的话,先将其引用进来:
DSC0003.png
  确保我们所获取到的都是jQuery和SPServices的最新版本
  5、如果你使用了jQuery在页面加载时执行一些操作的话,需要确保PreSaveAction()位于ready()函数的外面。



<script language="javascript" type="text/javascript">
$(document).ready(function() { // 一些在页面加载时要执行的操作
...
...
}); // 这里是ready() 函数结束的地方
function PreSaveAction() { // 一些在执行 "确定" 或 "保存文件"前要运行的操作
...
...
return true; // 或者当出错时,返回false
};
</script>
  在本文的接下来的步骤中,我们将从上面的第7行开始操作。

审计跟踪与jQuery
  我们并不是总能得到所要数据的及时状态;我们往往需要知道数据发生了怎样的变化。因此,我们需要在数据发生变化前获取该数据的一个快照,以便解释发生了哪些修改。
  jQuery和Marc Anderson的jQuery Library for SharePoint Services(简称SPServices)提供了写审计列表的极其容易的解决方案。

表单控件=当前用户数据
  要查找我们表单域的内容十分简单:只需要获取控件中那些名称中包含ff#的输入控件的值即可,该名称以“$”开头,并以“_”结尾。
  换句话说,如果我们的控件在SPD中类似下面的形式:




<SharePoint:FormField runat="server" id="ff3{$Pos}" … />

  
在设计视图中点击该控件,将在代码视图中高亮显示出该XSLT代码块。
  当我们在浏览器重查看源代码时,该控件的形式和下面类似:



<input name="ctl00$m$g_ae046c3b_1d8e_4427_95e7_41f5d9c0e374$ff3_1$ctl00$ctl01" type="text" value="Administrative Assistant" id="ctl00_m_g_ae046c3b_1d8e_4427_95e7_41f5d9c0e374_ff3_1_ctl00_ctl01" … />

  
在查看源代码前,先点击“编辑”表单操作链接。会在源代码中发现$ff3_。这将是唯一的名称中包含$ff3_的input对象。
  因此,我们可以通过jQuery这样访问其中的值:



$("input[name*=$ff3_]").val();

  
从字面上来理解,这里是查找所有名称中包含'$ff3_'的input控件(这里只会有一个)并返回其value属性的值。

标签=当前列表数据
  标签的内容很也容易查找:其文本形式的值位于一个id中包含ff#并由'_'包围的一个span标记内。
  换句话说,如果我们的控件在SPD中类似下面的形式:



<asp:Label runat="server" id="ff11{$Pos}" … />

  
在设计视图中点击可见的控件,可以在代码视图中定位到相应的XSLT代码块
  在浏览器重查看源代码时其形式变成类似下面的样子:



<span id="ctl00_m_g_ae046c3b_1d8e_4427_95e7_41f5d9c0e374_ff11_1">Medical Records Clerk</span>
  在查看源代码前,先点击“编辑”表单操作链接。会在源代码中发现_ff11_。这将是唯一的id中包含_ff11_的span。
  因此,我们可以通过jQuery这样访问其中的值:



$("span[id*=_ff11_]").text();

  
从字面上来理解,这里是查找所有名称中包含'_ff11_'的span块(这里只会有一个)并返回该标记内的文本信息。

创建变量
  有了上面这两条信息,我们就可以创建一个'old'和一个‘new'变量,以便将它们写到我们的审计跟踪列表中。



function PreSaveAction() {
var txtNewPos = $("input[name*=$ff3_]").val();
var txtOldPos = $("span[id*=_ff11_]").text();

return true;
};

  
为每一个你想要记录进审计跟踪列表的栏重复上面的工作。
  现在,我们把所需的数据都放在了变量中,下一次我们将利用它们完成一些工作。
  
  参考资料
  SharePoint:Extending the DVWP- Part 13:Putting PreSaveAction() to Work- Creating Variables

运维网声明 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-120468-1-1.html 上篇帖子: SharePoint与企业门户 下篇帖子: SharePoint Server 2010 一步一步从入门到精通
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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