WindTeam

 

Sharepoint 2010客户端对象模型使用 Ecmascript

ECMAScript是基于javascript的客户端脚本语言,SharePoint 2010中支持使用ECMAScript来调用客户端对象模型

背景

众所周知客户端对象模型是SharePoint 2010 中相当实用的新特性之一,你可能已经了解在SharePoint2007中你如果不想再服务器端调用SharePoint对象,只有通过Web Services来实现。现在在SharePoint 2010 中你可以使用客户端对象模型来实现与SharePoint的交互,当然你也可以继续使用Web Services的方式。

SharePoint 客户端对象模型工作原理

2011-03-24-SPClientObjectModel-01.png

SharePoint客户端对象模型是SharePoint的API之一运行在客户端,他通过应用程序将API调用转化为XML 请求,然后传输到SharePoint服务器端。在服务器端,XML请求被一个名为Client.svc的服务处理为SharePoint服务器端对象模型然后返回结果。得到结果后,Client.svc在把他们转化为JSON对象,并返回到客户端对象模型。最后在客户端JSON再被转义成ECMAScript 对象,从而提供ECMAScript服务。

参考1: http://msdn.microsoft.com/en-us/library/ee538253.aspx
参考2: http://msdn.microsoft.com/en-us/library/ee857094(office.14).aspx

使用ECMAScript

  1. 创建一个列表名为Product然后添加一些记录。
  2. 在页面库中创建一个ASPX 测试页面。
  3. 添加内容编辑web part并加入如下代码。
01 <script type="text/javascript">
02   
03 ExecuteOrDelayUntilScriptLoaded(MainFunction, "sp.js"); 
04     
05 var objContext = null
06 var objWeb = null     
07 var objList = null;
08 var objItem = null;
09   
10     function MainFunction() {   
11         objContext = new SP.ClientContext.get_current();
12         objWeb = objContext.get_web();   
13         objList = objWeb.get_lists().getByTitle("Product");
14     
15         objContext.load(objList);
16   
17         objContext.executeQueryAsync(Function.createDelegate(this, this.onSuccess), Function.createDelegate(this, this.onFail));   
18     }   
19   
20     function onSuccess(sender, args) {
21         alert('Item Count: ' + objList.get_itemCount());
22     }   
23   
24     function onFail(sender, args) {   
25         alert('Some error has occured.');   
26     }  
27  </script>

2011-03-24-SPClientObjectModel-02.png

说明

我们使用ExecuteOrDelayUntilScriptLoaded(Func, "sp.js") 来加载客户端对象模型。该函数是客户端对象模型的核心,并加载sp.js以及最为主函数的函数名。我们必须用过SP.ClientContext来获取站点上下文内容并通过get_web()方法获取网站的上下文内容,然后通过getByTitle方法来获取先前创建的list对象。在加载所有对象是可能引起延迟或性能下降。最后我们通过异步加载成功时调用OnSuccess()方法,失败是调用OnFail() 方法。

结论

ECMAScript是基于javascript的客户端脚本语言,SharePoint 2010中支持使用ECMAScript来调用客户端对象模型。用户能在SharePoint 2010的Aspx页面中使用ECMAScript,即使在没有VS或者SharePoint Designer的情况下,也能轻松调用的SharePoint中的内容并加入复杂的web services。

posted on 2011-06-24 09:06  WindTeam  阅读(393)  评论(0编辑  收藏  举报

导航