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

[经验分享] [SharePoint 2010] Javascript Client Object Model 在SharePoint2010中的使用方法

[复制链接]

尚未签到

发表于 2015-9-28 11:05:57 | 显示全部楼层 |阅读模式
  SharePoint2010 提供了基于Javascript的 Client Object Model库,用来操作SharePoint对象模型,当开发时需要用到javascript作客户端开发时,这些库将非常有用,这里介绍一下常规的方法。
  1. SP.js load
  首先,我们需要将相关的JS库load进来,主要是SP.js这个文件,它具体位置是在C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\14\TEMPLATE\LAYOUTS下,我们这里可以借助<SharePoint: ScriptLink>这样的服务器端标签来自动引入SP.js, 在页面内加入

<Sharepoint:ScriptLink name="SP.js" runat="server" ID="SPScriptLink" LoadAfterUI="True"  OnDemand="true" localizable="false"/>  这样我们的Client Object Model库就load进来了。注意LoadAfterUI="True",所以当你的js代码需要在Page_Load()时候执行,并且将调用到SP.js的时候,为了确保SP.js 已经load,请使用
  ExecuteOrDelayUntilScriptLoaded(functionName, "sp.js");
  其中functionName 是你自定义的方法名,这样确保你的方法会在SP.js load完成后被调用。
  2. Get List item & Edit List Item
  在load 了SP.js后,我们可以基于Client Object Model 对list作操作了。
  如何得到某个List Item:
  




   1: function GetItemTest(queryId)   2:     {   3:         clientContext = SP.ClientContext.get_current();    4:         var list = clientContext.get_web().get_lists().getByTitle('#Your List Name#');   5:         var camlQuery = new SP.CamlQuery();   6:         var strCaml = "<View><ViewFields><FieldRef Name='LinkTitle'/><FieldRef Name='Field1' /><FieldRef Name='Field2'/></ViewFields><Query><Where><Eq><FieldRef Name='LinkTitle' /><Value Type='Text'>" + queryId + "</Value></Eq></Where></Query></View>";                     7:         camlQuery.set_viewXml(strCaml);   8:         this.collListItem = list.getItems(camlQuery);   9:         clientContext.load(collListItem);  10:         clientContext.executeQueryAsync(Function.createDelegate(this, this.onQuerySucceeded), Function.createDelegate(this, this.onQueryFailed));  11:     }



   1: function onQuerySucceeded(sender, args)   2:     {   3:         var listItemEnumerator =  collListItem.getEnumerator();   4:     5:         while(listItemEnumerator.moveNext())   6:         {   7:             var oListItem = listItemEnumerator.get_current();   8:             var item = oListItem.get_item('Field1');   9:         }  10:    }  11:    12: function onQueryFailed(sender, args)  13:     {  14:         alert('Request failed' + args.get_message() + '\n' + arg.get_stackTrace());  15:     }  16:    17:    18: var collListItem = null;  19: var clientContext = null;  注意在onQuerySucceeded方法中的变量item,如果Field1是普通的single line text之类的类型,那么item就是Field1的值了,如果Field1是look up类型,那么可以有
  item.get_lookupId() 和 item.get_lookupValue() 来取得相应的值。 如果 Field1是Multi - People and Group类型(允许插入多人),那么麻烦一些,因为这时候返回的item是个SP.FieldUserValue的数组,遍历数组




   1: for(var i = 0; i < item.length; i++)   2:                 {   3:                    alert(item.get_lookupId());   4:                    alert(item.get_lookupValue());   5:                 }  一样可以取到相应的People & Group值。
  当我需要对某个Item做update时,方法如下




   1: oListItem.set_item("Field1",fieldValue);   3:             oListItem.update();   4:             clientContext.load(oListItem);   5:             clientContext.executeQueryAsync(onSuccess, onfail);   这里的onSuccess 和Onfail 仍然为回调方法,和上面的类似,这里就不详细写了。 这样的方法update一个single line text类型的字段没有问题,但是如果是Lookup字段,该怎么Update呢?




   1: var fieldValue = SP.FieldLookupValue.set_lookupId(value);    这样的fieldValue 就可以用上面的update方法对lookup类型的字段更新了。
  如果 Field1是Multi - People and Group类型(允许插入多人),那么麻烦一些,因为要创建一个SPFieldUserValue 的数组来更新




   1: var fieldValue = new Array();   2: var userValue1 = SP.FieldUserValue.fromUser("UserName1");   3: var userValue2 = SP.FieldUserValue.fromUser("UserName2");   4: fieldValue.push(userValue1);   5: fieldValue.push(userValue2);  这样构造出来的fieldValue 可以用来update Multi - People and Group类型的字段了。
  其他不同类型的字段的获取和更新都可以采用这个思路,只是具体的类型不同而已,可以通过查阅msdn来完成。
  http://msdn.microsoft.com/en-us/library/ee557057.aspx
  3. Pop up dialogue
  如果你想你的应用能够有类似新建Item操作弹出窗口,那么就选用弹出窗口的方法吧:




   1: function Callback(dialogResult) {   2:        if (dialogResult == SP.UI.DialogResult.OK)   3:        {   4:            alert("Register this training successfully.");   5:        }   6:        else   7:        {   8:            ExecuteOrDelayUntilScriptLoaded(RemoveCurrentUserRegistrationInfo, "sp.js");   9:        }  10:   }  11:    12:    function openPopup(modelName,targetUrl,args) {  13:        var options = {  14:            url: targetUrl,  15:            title: modelName,  16:            allowMaximize: false,  17:            showClose: true,  18:            width: 650,  19:            height: 130,  20:            showClose:false,  21:            dialogReturnValueCallback: Callback  22:        }  23:             24:            SP.UI.ModalDialog.showModalDialog(options);  25:    }   openPopup方法首先配置一个options 对象,设置相关参数,然后作为窗口弹出。

运维网声明 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-119911-1-1.html 上篇帖子: SharePoint初探-SharePoint,WSS,SPS概述(1) 下篇帖子: SharePoint 2013 Farm 安装指南——构建一个双层SharePoint Farm
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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