Bài 3: Thao tác với dữ liệu SharePoint từ phía client
-
Upload
hoc-lap-trinh-web -
Category
Documents
-
view
1.402 -
download
8
description
Transcript of Bài 3: Thao tác với dữ liệu SharePoint từ phía client
Bài 3:Thao tác với dữ liệu SharePoint từ phía client
Hệ thống bài cũ
Tìm hiểu về Web Part trên SharePoint 2010Các giải pháp phát triển Web Part sử dụng Visual Studio2010
Web Par chuẩnWeb Part trực quan
Tìm hiểu các trang trên SharePoint
Tìm hiểu về Web Part trên SharePoint 2010Các giải pháp phát triển Web Part sử dụng Visual Studio2010
Web Par chuẩnWeb Part trực quan
Tìm hiểu các trang trên SharePoint
Thao tác dữ liệu SharePoint từ phía Client 2
Mục tiêu bài học
Tìm hiểu mô hình đối tượng phía Client trên SharePoint2010Tìm hiểu các cách thao tác dữ liệu SharePoint từ phíaclient sử dụng thư viện được cung cấp bởi SharePoint2010Nắm bắt các thủ tục để thao tác dữ liệu SharePoint từphía Client
Tìm hiểu mô hình đối tượng phía Client trên SharePoint2010Tìm hiểu các cách thao tác dữ liệu SharePoint từ phíaclient sử dụng thư viện được cung cấp bởi SharePoint2010Nắm bắt các thủ tục để thao tác dữ liệu SharePoint từphía Client
Thao tác dữ liệu SharePoint từ phía Client 3
Lý do cần đến mô hình đối tượngphía Client
Mô hình đối tượng SharePoint (Server OM) đòi hỏi cácứng dụng phải được triển khai trên môi trường cài đặtSharePointMô hình đối tượng Client (Client OM) cho phép ứng dụngtừ xa (không chạy trên môi trường cài đặt SharePoint)có thể thao tác dữ liệu trên các đối tượng SharePoint.
Mô hình đối tượng SharePoint (Server OM) đòi hỏi cácứng dụng phải được triển khai trên môi trường cài đặtSharePointMô hình đối tượng Client (Client OM) cho phép ứng dụngtừ xa (không chạy trên môi trường cài đặt SharePoint)có thể thao tác dữ liệu trên các đối tượng SharePoint.
Thao tác dữ liệu SharePoint từ phía Client 4
Các loại ứng dụng Client hỗ trợ
Các loại hình ứng dụng Client có thể thao tác dữ liệuSharePoint
WindowsConsoleASP.NETSilverlight trên môi trường có trình duyệtSilverlight ngoài môi trường trình duyệt…
Các loại hình ứng dụng Client có thể thao tác dữ liệuSharePoint
WindowsConsoleASP.NETSilverlight trên môi trường có trình duyệtSilverlight ngoài môi trường trình duyệt…
Thao tác dữ liệu SharePoint từ phía Client 5
Mô hình đối tượng phía clientClient Object Model
NhNhấấtt quánquán HiHiệệuu ququảả
Thao tác dữ liệu SharePoint từ phía Client 6
ClientClient ApplicationApplication
NhNhấấtt quánquán HiHiệệuu ququảả
Mô hình đối tượng phía clientClient Object Model
Nhằm đơn giản hóa và dễ dàng hơn trong việc sử dụngcác giao diện lập trình ứng dụng (API) để thêm (Add),đọc (Retrieve), cập nhật (Update), xóa (Delete) và quảnlý dữ liệu SharePoint.
Nhằm đơn giản hóa và dễ dàng hơn trong việc sử dụngcác giao diện lập trình ứng dụng (API) để thêm (Add),đọc (Retrieve), cập nhật (Update), xóa (Delete) và quảnlý dữ liệu SharePoint.
Thao tác dữ liệu SharePoint từ phía Client 7
Mô hình đối tượng phía clientClient Object Model
SharePoint Client-Side API.NET CLR:
Được sử dụng cho các ứng dụng phía client sử dụng .NETframework (vd: Windows Form, WPF…)
Silverlight:Được sử dụng cho các ứng dụng phía client sử dụngSilverlight
JavaScript (ECMAScript):Được sử dụng cho các ứng dụng web với JavaScript
SharePoint Client-Side API.NET CLR:
Được sử dụng cho các ứng dụng phía client sử dụng .NETframework (vd: Windows Form, WPF…)
Silverlight:Được sử dụng cho các ứng dụng phía client sử dụngSilverlight
JavaScript (ECMAScript):Được sử dụng cho các ứng dụng web với JavaScript
Thao tác dữ liệu SharePoint từ phía Client 8
So sánh các API phía clientvới phía Server
Server .NET Managed vàSilverlight
ECMAScript
Microsoft.SharePoint.SPContext
Microsoft.SharePoint.Client.ClientContext
SP.ClientContext
Microsoft.SharePoint.SPSite
Microsoft.SharePoint.Client.Site
SP.Site
Thao tác dữ liệu SharePoint từ phía Client 9
Microsoft.SharePoint.SPSite
Microsoft.SharePoint.Client.Site
Microsoft.SharePoint.SPWeb
Microsoft.SharePoint.Client.Web
SP.Web
Microsoft.SharePoint.SPList
Microsoft.SharePoint.Client.List
SP.List
Microsoft.SharePoint.SPListItem
Microsoft.SharePoint.Client.ListItem
SP.ListItem
Client OM: .NET CLR API
Cung cấp khả năng thao tác dữ liệu SharePoint từ xathông qua các ứng dụng nền Microsoft .NETThư viện lập trình (API): Thuộc thư mục 14\ISAPI
Microsoft.SharePoint.Client.dll (281kb)Microsoft.SharePoint.Client.Runtime.dll (145kb)
Thao tác dữ liệu SharePoint từ phía Client 10
Client OM: .NET CLR API
ClientContextLà đối tượng khởi nguồn cho quá trình thao tác dữ liệuSharePoint từ xa thông qua các ứng dụng .NETCần phải khởi tạo đối tượng này trước khi truy vấn, cậpnhật dữ liệu SharePoint
Thao tác dữ liệu SharePoint từ phía Client 11
string siteUrl = "http://sp2010";using (ClientContext myContext = new ClientContext(siteUrl)){
myContext.Load(myContext.Site);myContext.ExecuteQuery();Console.WriteLine(myContext.Site.Url);
}
ClientContext
ClientContext:Được coi như đối tượng trung tâm để thao tác các đốitượng SharePoint từ phía Client
ClientContext():Phương thức khởi tạo cho một Web site hoặc SiteCollection nhất định.
ClientContext.Load()Chỉ ra đối tượng sẽ được gọi bởi Client
ClientContext:Được coi như đối tượng trung tâm để thao tác các đốitượng SharePoint từ phía Client
ClientContext():Phương thức khởi tạo cho một Web site hoặc SiteCollection nhất định.
ClientContext.Load()Chỉ ra đối tượng sẽ được gọi bởi Client
Thao tác dữ liệu SharePoint từ phía Client 12
ClientContext
ClientContext.LoadQuery()Chỉ ra câu truy vấn sẽ được gọi bởi Client
ClientContext.ExecuteQuery()Thực hiện việc tải các đối tượng trả về từ các yêu cầutrong Load hoặc LoadQuery
ClientContext.Web.Update()Thông báo cập nhật dữ liệu từ phía Client
ClientContext.LoadQuery()Chỉ ra câu truy vấn sẽ được gọi bởi Client
ClientContext.ExecuteQuery()Thực hiện việc tải các đối tượng trả về từ các yêu cầutrong Load hoặc LoadQuery
ClientContext.Web.Update()Thông báo cập nhật dữ liệu từ phía Client
Thao tác dữ liệu SharePoint từ phía Client 13
Cú pháp Query và cú pháp Method
.NET API có thể sử dụng 2 loại cú pháp (Query vàMethod) để tải một đối tượng độc lập, các thuộc tính củađối tượng hoặc một tập các enumerable object.
Thao tác dữ liệu SharePoint từ phía Client 14
Cú pháp Query và cú pháp Method
Cú pháp QueryChỉ sử dụng trongphương thức LoadQueryĐược sử dụng thông quahai bước
Khai báo biểu thức truy vấnNhận kết quả truy vấn
Cú pháp MethodCó thể được sử dụng ở cảhai phương thức Load vàLoadQuerySử dụng biểu thứcLambda để truy vấn
Chỉ sử dụng trongphương thức LoadQueryĐược sử dụng thông quahai bước
Khai báo biểu thức truy vấnNhận kết quả truy vấn
Có thể được sử dụng ở cảhai phương thức Load vàLoadQuerySử dụng biểu thứcLambda để truy vấn
Thao tác dữ liệu SharePoint từ phía Client 15
Cú pháp Query
//Khởi tạo câu truy vấn LINQ
var query = from listin clientContext.Web.Listswhere list.Title != nullselect list;
//Truyền truy vấn vào phướng thức LoadQuery
var result = clientContext.LoadQuery(query);//Thực hiện truy vấnclientContext.ExecuteQuery();
//Khởi tạo câu truy vấn LINQ
var query = from listin clientContext.Web.Listswhere list.Title != nullselect list;
//Truyền truy vấn vào phướng thức LoadQuery
var result = clientContext.LoadQuery(query);//Thực hiện truy vấnclientContext.ExecuteQuery();
Thao tác dữ liệu SharePoint từ phía Client 16
Cú pháp Method
//Thực hiện tải truy vấn trực tiếp theo kiểu Lambda
clientContext.Load(clientContext.Web,website => website.Lists.Include(list => list.Title).Where(list => list.Title != null));
//Thực thi ngay truy vấn này
clientContext.ExecuteQuery();
//Thực hiện tải truy vấn trực tiếp theo kiểu Lambda
clientContext.Load(clientContext.Web,website => website.Lists.Include(list => list.Title).Where(list => list.Title != null));
//Thực thi ngay truy vấn này
clientContext.ExecuteQuery();
Thao tác dữ liệu SharePoint từ phía Client 17
Xác thực trong .NET Client OM
Mặc định .NET Client OM sử dụng cơ chế xác thựcWindows (Windows credentials) DefaultCredentialsDo đó các ứng dụng Client sử dụng .NET Client OM cầnphải được thực thi trên máy có cùng Domain với máychủ SharePoint.
Thao tác dữ liệu SharePoint từ phía Client 18
Tham khảo: http://msdn.microsoft.com/en-us/library/ee535729.aspx
Xác thực trong .NET Client OM
Có thể thay đổi chế độ xác thực trên đối tượngClientContext khi SharePoint được cấu hình cơ chế xácthực Form Authentication.
//chọn kiểu xác thực FormAuthentication cho ClientContextclientContext.AuthenticationMode
= ClientAuthenticationMode.FormsAuthentication;
Thao tác dữ liệu SharePoint từ phía Client 19
//chọn kiểu xác thực FormAuthentication cho ClientContextclientContext.AuthenticationMode
= ClientAuthenticationMode.FormsAuthentication;
//Truyền UserName và Password trong kiểu xác thực FormFormsAuthenticationLoginInfo formsAuthInfo
= new FormsAuthenticationLoginInfo( "MyUser","MyPassword");
clientContext.FormsAuthenticationLoginInfo = formsAuthInfo;
Demo
Demo:Ứng dụng Console sử dụng .NET Client Object Model đểthao tác dữ liệu SharePoint
Thao tác dữ liệu SharePoint từ phía Client 20
Client OM: Silverlight API
Silverlight Client OM cho phép ứng dụng Silverlight trongcác trang ASPX hoặc Web Part thao tác với dữ liệuSharePointThư mục chứa thư viện lập trình SharePoint phía clientcho các ứng dụng Silverlight
C:\Program Files\Common Files\Microsoft Shared\WebServer Extensions \14\TEMPLATE\LAYOUTS\ClientBin
Microsoft.SharePoint.Client.Silverlight– 262KB
Microsoft.SharePoint.Client.Silverlight.Runtime– 138KB
Silverlight Client OM cho phép ứng dụng Silverlight trongcác trang ASPX hoặc Web Part thao tác với dữ liệuSharePointThư mục chứa thư viện lập trình SharePoint phía clientcho các ứng dụng Silverlight
C:\Program Files\Common Files\Microsoft Shared\WebServer Extensions \14\TEMPLATE\LAYOUTS\ClientBin
Microsoft.SharePoint.Client.Silverlight– 262KB
Microsoft.SharePoint.Client.Silverlight.Runtime– 138KB
Thao tác dữ liệu SharePoint từ phía Client 21
Demo
Demo:Viết một SilverlightNhúng Silverlight vào Silverlight Web Part trên SharePointđể thao tác với dữ liệu SharePoint
Thao tác dữ liệu SharePoint từ phía Client 22
Client OM: JavaScript API
JavaScript OM cho phép làm việc với các đối tượng trênSharePoint mà không cần phải triển khai code lên Server.Chỉ làm việc với các đối tượng trong ngữ cảnhSharePoint hiện thời (current context): các đối tượngtrên site SharePoint mà JavaScript được triển khai.Thư viện JavaScript API có thể dễ dàng được tham chiếutrong các trang SharePoint thông qua
_layouts/sp.jsSử dụng thẻ <SharePoint:ScriptLink>
JavaScript OM cho phép làm việc với các đối tượng trênSharePoint mà không cần phải triển khai code lên Server.Chỉ làm việc với các đối tượng trong ngữ cảnhSharePoint hiện thời (current context): các đối tượngtrên site SharePoint mà JavaScript được triển khai.Thư viện JavaScript API có thể dễ dàng được tham chiếutrong các trang SharePoint thông qua
_layouts/sp.jsSử dụng thẻ <SharePoint:ScriptLink>
Thao tác dữ liệu SharePoint từ phía Client 23
Client OM: JavaScript API
Các thư viện lập trình SharePoint phía client, JavaScriptAPI nằm tại thư mục
C:\Program Files\Common Files\Microsoft Shared\WebServer Extensions\14\TEMPLATE\LAYOUTS
SP.js (SP.debug.js):– 380KB (559KB)
SP.Core.js (SP.Core.debug.js):– 13KB (20KB)
SP.Runtime.js (SP.Runtime.debug.js):– 68KB (108KB)
Các thư viện lập trình SharePoint phía client, JavaScriptAPI nằm tại thư mục
C:\Program Files\Common Files\Microsoft Shared\WebServer Extensions\14\TEMPLATE\LAYOUTS
SP.js (SP.debug.js):– 380KB (559KB)
SP.Core.js (SP.Core.debug.js):– 13KB (20KB)
SP.Runtime.js (SP.Runtime.debug.js):– 68KB (108KB)
Thao tác dữ liệu SharePoint từ phía Client 24
Thủ tục nhận dữ liệu từ phía Client
Khởi tạo đối tượng ClientContext
Sử dụng mô hình đối tượng để chỉ ra đối tượng hoặc dữliệu cần thao tác
//Truyền vào tham số URL của site để khởi tạovar clientContext = new SP.ClientContext(siteUrl);
Khởi tạo đối tượng ClientContext
Sử dụng mô hình đối tượng để chỉ ra đối tượng hoặc dữliệu cần thao tác
Thao tác dữ liệu SharePoint từ phía Client 25
//Lấy ra đối tượng web của sitevar oWebsite = clientContext.get_web();
//Lấy ra tất cả các lists của web đóthis.collList = oWebsite.get_lists();
Thủ tục nhận dữ liệu từ phía Client
Tải tại chỗ sử dụng Load() để trả về đối tượng, tập đốitượng hay dữ liệu
Tải qua truy vấn sử dụng LoadQuery() để trả về mộtenumerable collection của các đối tượng
this.collList = oWebsite.get_lists();//Thực hiện tải lists vềclientContext.load(collList);
Tải tại chỗ sử dụng Load() để trả về đối tượng, tập đốitượng hay dữ liệu
Tải qua truy vấn sử dụng LoadQuery() để trả về mộtenumerable collection của các đối tượng
Thao tác dữ liệu SharePoint từ phía Client 26
var collList = oWebsite.get_lists();
//Thực hiện tải lists về trong đó có lọc thuộc tính lấy vềthis.listInfoCollection =
clientContext.loadQuery(collList,'Include(Title, Id)');
Thủ tục nhận dữ liệu từ phía Client
Thực thi truy vấn bằng việc gọi phương thứcExecuteQuery: trong .NET API hay Silverlight API
Thực thi truy vấn bằng việc gọi phương thứcExecuteQueryAsync: trong JavaScrip API hoặc SilverlightAPI
clientContext.Load(oWebsite);//Thực thi truy vấnclientContext.ExecuteQuery();
Thực thi truy vấn bằng việc gọi phương thứcExecuteQuery: trong .NET API hay Silverlight API
Thực thi truy vấn bằng việc gọi phương thứcExecuteQueryAsync: trong JavaScrip API hoặc SilverlightAPI
Thao tác dữ liệu SharePoint từ phía Client 27
clientContext.executeQueryAsync(Function.createDelegate(this, this.onQuerySucceeded),Function.createDelegate(this, this.onQueryFailed)); }
function onQuerySucceeded(sender, args) {…}function onQueryFailed(sender, args) {…}
Nhận các đối tượng từ phía Client
JavaScript APIfunction retrieveWebSite() {var clientContext
= new SP.ClientContext('/sites/MySiteCollection');
var oWebsite = clientContext.get_web();var collList = oWebsite.get_lists();this.oList = collList.getByTitle('Announcements');
clientContext.load(oList);clientContext.executeQueryAsync(
Function.createDelegate(this, this.onQuerySucceeded),Function.createDelegate(this, this.onQueryFailed));}
Thao tác dữ liệu SharePoint từ phía Client 28
function retrieveWebSite() {var clientContext
= new SP.ClientContext('/sites/MySiteCollection');
var oWebsite = clientContext.get_web();var collList = oWebsite.get_lists();this.oList = collList.getByTitle('Announcements');
clientContext.load(oList);clientContext.executeQueryAsync(
Function.createDelegate(this, this.onQuerySucceeded),Function.createDelegate(this, this.onQueryFailed));}
Nhận các đối tượng từ phía Client
.NET API
ClientContext clientContext= new ClientContext("http://MyServer/");
Web oWebsite = clientContext.Web;ListCollection collList = oWebsite.Lists;List oList = collList.GetByTitle("Announcements");
clientContext.Load(oList);clientContext.ExecuteQuery();
Console.WriteLine("Title: {0} Created: {1}",oList.Title, oList.Created);
Thao tác dữ liệu SharePoint từ phía Client 29
ClientContext clientContext= new ClientContext("http://MyServer/");
Web oWebsite = clientContext.Web;ListCollection collList = oWebsite.Lists;List oList = collList.GetByTitle("Announcements");
clientContext.Load(oList);clientContext.ExecuteQuery();
Console.WriteLine("Title: {0} Created: {1}",oList.Title, oList.Created);
Chuỗi truy vấn trong JavaScript OM
JavaScript Client OM không hỗ trợ truy vấn LINQJavaScript sử dụng biểu thức chuỗi (string expression)để truy vấnCú pháp đối với một list:
Cú pháp đối với list collection:
clientContext.load(oList, 'Title' ,'Id');
JavaScript Client OM không hỗ trợ truy vấn LINQJavaScript sử dụng biểu thức chuỗi (string expression)để truy vấnCú pháp đối với một list:
Cú pháp đối với list collection:
Thao tác dữ liệu SharePoint từ phía Client 30
myListArray = clientContext.loadQuery(collList,'Include(Title,Fields.Include(Title,Description))');
Tham khảo: http://msdn.microsoft.com/en-us/library/ee539350.aspx
Cập nhật đối tượng
Để cập nhận đối tượng sử dụng Client OM, gọi phươngthức Update cho cả .NET và JavaScript OM..NET Client OM
JavaScript Client OM
List oList = collList.GetByTitle("My List");oList.Description = "Changed description...";oList.Update();
Để cập nhận đối tượng sử dụng Client OM, gọi phươngthức Update cho cả .NET và JavaScript OM..NET Client OM
JavaScript Client OM
Thao tác dữ liệu SharePoint từ phía Client 31
Tham khảo: http://msdn.microsoft.com/en-us/library/ee539350.aspx
List oList = collList.GetByTitle("My List");oList.Description = "Changed description...";oList.Update();
this.oList = collList.getByTitle('My List');oList.set_title('Changed description...');oList.update();
Thủ tục nhận một List Items
Để nhận về danh sách các Item trong một List, thôngthường chúng ta sử dụng CAML để chỉ ra các Item nàosẽ nằm trong giá trị trả vềViệc lấy về danh sách các Item trong list được thực hiệnthông qua hai bước
Khi báo truy vấn CAMLGửi truy vấn này vào phương thức GetItems
Để nhận về danh sách các Item trong một List, thôngthường chúng ta sử dụng CAML để chỉ ra các Item nàosẽ nằm trong giá trị trả vềViệc lấy về danh sách các Item trong list được thực hiệnthông qua hai bước
Khi báo truy vấn CAMLGửi truy vấn này vào phương thức GetItems
Thao tác dữ liệu SharePoint từ phía Client 32
Truy vấn CAML: http://msdn.microsoft.com/en-us/library/ms462365.aspx
VD: Thủ tục nhận một List Item
.NET Client OM
JavaScript Client OM
CamlQuery camlQuery = new CamlQuery();camlQuery.ViewXml = "<View><Query><Where><Leq>"
+ "<FieldRef Name='ID'/><Value Type='Number'>100</Value>"+ "</Leq></Where></Query><RowLimit>50</RowLimit></View>";
ListItemCollection collListItem = oList.GetItems(camlQuery);
.NET Client OM
JavaScript Client OM
Thao tác dữ liệu SharePoint từ phía Client 33
var camlQuery = new SP.CamlQuery();camlQuery.set_viewXml('<View><Query><Where><Leq>'+ '<FieldRef Name=\'ID\'/><Value Type=\'Number\'>100</Value>'+ '</Leq></Where></Query><RowLimit>50</RowLimit></View>');
this.collListItem = oList.getItems(camlQuery);
Demo
Demo:Sử dụng JavaScript để truy vấn dữ liệu SharePoint
Thao tác dữ liệu SharePoint từ phía Client 34
Liên kết thực hành
Công việc thông thườngHow to: Work with WebsitesHow to: Retrieve ListsHow to: Create, Update, and Delete ListsHow to: Retrieve List ItemsHow to: Create, Update, and Delete List ItemsHow to: Work with Users and GroupsHow to: Work with RolesHow to: Break Role Assignment InheritanceHow to: Work with User Custom ActionsHow to: Work with Web Parts on a Page
Công việc nâng caoHow to: Use Conditional ScopeHow to: Use Exception Handling ScopeCode Sample: Silverlight List Viewer
Công việc thông thườngHow to: Work with WebsitesHow to: Retrieve ListsHow to: Create, Update, and Delete ListsHow to: Retrieve List ItemsHow to: Create, Update, and Delete List ItemsHow to: Work with Users and GroupsHow to: Work with RolesHow to: Break Role Assignment InheritanceHow to: Work with User Custom ActionsHow to: Work with Web Parts on a Page
Công việc nâng caoHow to: Use Conditional ScopeHow to: Use Exception Handling ScopeCode Sample: Silverlight List Viewer
Thao tác dữ liệu SharePoint từ phía Client 35
Tổng kết bài học
SharePoint cung cấp các thư viện để làm việc với dữ liệutừ phía clientsCác thư viện này phù hợp với từng loại ứng dụng khácnhau
.NET CLR: các ứng dụng desktop,…Silverligth: các ứng dụng nền SilverlightECMAScript: các ứng dụng web, với JavaScript
SharePoint cung cấp các thư viện để làm việc với dữ liệutừ phía clientsCác thư viện này phù hợp với từng loại ứng dụng khácnhau
.NET CLR: các ứng dụng desktop,…Silverligth: các ứng dụng nền SilverlightECMAScript: các ứng dụng web, với JavaScript
Thao tác dữ liệu SharePoint từ phía Client 36
Danh sách tham khảo
http://msdn.microsoft.com/en-us/library/ee539350.aspxhttp://msdn.microsoft.com/en-us/library/hh185009.aspxhttp://msdn.microsoft.com/en-us/library/ee539350.aspx
Thao tác dữ liệu SharePoint từ phía Client 37