Mục tiêu bài họcTìm hiểu mô hình đối tượng phía Client trên SharePoint2010 Tìm hiểu các cách thao tác dữ liệu SharePoint từ phía client sử dụng thư viện được cung cấp bởi SharePoint Tìm
Trang 1Bài 3:
Thao tác với dữ liệu SharePoint từ phía client
Trang 2Hệ thống bài cũ
Tìm hiểu về Web Part trên SharePoint 2010
Các giải pháp phát triển Web Part sử dụng Visual Studio2010
Web Par chuẩn
Web Part trực quan
Tìm hiểu các trang trên SharePoint
Tìm hiểu về Web Part trên SharePoint 2010
Các giải pháp phát triển Web Part sử dụng Visual Studio2010
Web Par chuẩn
Web Part trực quan
Tìm hiểu các trang trên SharePoint
Trang 3Mục tiêu bài học
Tìm hiểu mô hình đối tượng phía Client trên SharePoint2010
Tìm hiểu các cách thao tác dữ liệu SharePoint từ phía
client sử dụng thư viện được cung cấp bởi SharePoint
Tìm hiểu các cách thao tác dữ liệu SharePoint từ phía
client sử dụng thư viện được cung cấp bởi SharePoint
2010
Nắm bắt các thủ tục để thao tác dữ liệu SharePoint từ
phía Client
Trang 4Lý do cần đến mô hình đối tượng
phí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 đặt
SharePoint
Mô hình đối tượng Client (Client OM) cho phép ứng dụng
từ 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 đặt
SharePoint
Mô hình đối tượng Client (Client OM) cho phép ứng dụng
từ 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
Trang 5Silverlight trên môi trường có trình duyệt
Silverlight ngoài môi trường trình duyệt
Silverlight trên môi trường có trình duyệt
Silverlight ngoài môi trường trình duyệt
…
Trang 6Mô hình đối tượng phía client
Client Object Model
Nh Nhấấtt quán quán Hi Hiệệuu qu quảả
Client Client Application Application
Nh Nhấấtt quán quán Hi Hiệệuu qu quảả
Trang 7Mô hình đối tượng phía client
Client 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ản
Trang 8Mô hình đối tượng phía client
Client Object Model
SharePoint Client-Side API
Được sử dụng cho các ứng dụng web với JavaScript
SharePoint Client-Side API
Được sử dụng cho các ứng dụng web với JavaScript
Trang 9So sánh các API phía client
với phía Server
SP.ClientContext
Microsoft.SharePoint.
SPSite
Microsoft.SharePoint.Client Site
SP.Site
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
Trang 10Client OM: NET CLR API
Cung cấp khả năng thao tác dữ liệu SharePoint từ xa
thông qua các ứng dụng nền Microsoft NET
Thư 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)
Trang 11Client OM: NET CLR API
ClientContext
Là đối tượng khởi nguồn cho quá trình thao tác dữ liệu
SharePoint từ xa thông qua các ứng dụng NET
Cần phải khởi tạo đối tượng này trước khi truy vấn, cập
Trang 12ClientContext:
Được coi như đối tượng trung tâm để thao tác các đối
tượng SharePoint từ phía Client
Được coi như đối tượng trung tâm để thao tác các đối
tượng SharePoint từ phía Client
ClientContext():
Phương thức khởi tạo cho một Web site hoặc Site
Collection nhất định.
ClientContext.Load()
Chỉ ra đối tượng sẽ được gọi bởi Client
Trang 13ClientContext.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ầu
trong Load hoặc LoadQuery
Thực hiện việc tải các đối tượng trả về từ các yêu cầu
trong Load hoặc LoadQuery
ClientContext.Web.Update()
Thông báo cập nhật dữ liệu từ phía Client
Trang 14Cú 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
Trang 15Sử dụng biểu thứcLambda để truy vấn
Sử dụng biểu thứcLambda để truy vấn
Trang 16Cú pháp Query
//Khởi tạo câu truy vấn LINQ
var query = from list
in clientContext.Web.Lists
where list.Title != null select list;
//Truyền truy vấn vào phướng thức LoadQuery
var result = clientContext.LoadQuery(query);
//Thực hiện truy vấn
clientContext.ExecuteQuery();
//Khởi tạo câu truy vấn LINQ
var query = from list
in clientContext.Web.Lists
where list.Title != null select list;
//Truyền truy vấn vào phướng thức LoadQuery
var result = clientContext.LoadQuery(query);
//Thực hiện truy vấn
clientContext.ExecuteQuery();
Trang 17Cú 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();
Trang 18Xác thực trong NET Client OM
Mặc định NET Client OM sử dụng cơ chế xác thực
Windows (Windows credentials) DefaultCredentials
Do đó 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áy
chủ SharePoint
Tham khảo: http://msdn.microsoft.com/en-us/library/ee535729.aspx
Trang 19Xác thực trong NET Client OM
Có thể thay đổi chế độ xác thực trên đối tượng
ClientContext khi SharePoint được cấu hình cơ chế xác
Trang 20Demo:
Ứng dụng Console sử dụng NET Client Object Model để
thao tác dữ liệu SharePoint
Trang 21Client 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ệu
SharePoint
Thư mục chứa thư viện lập trình SharePoint phía client
cho các ứng dụng Silverlight
C:\Program Files\Common Files\Microsoft Shared\Web
Server 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ệu
SharePoint
Thư mục chứa thư viện lập trình SharePoint phía client
cho các ứng dụng Silverlight
C:\Program Files\Common Files\Microsoft Shared\Web
Server Extensions \14\TEMPLATE\LAYOUTS\ClientBin
Microsoft.SharePoint.Client.Silverlight – 262KB
Microsoft.SharePoint.Client.Silverlight.Runtime – 138KB
Trang 22Demo:
Viết một Silverlight
Nhúng Silverlight vào Silverlight Web Part trên SharePoint
để thao tác với dữ liệu SharePoint
Trang 23Client 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ảnh
SharePoint hiện thời (current context): các đối tượng
trê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.js
Sử 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ảnh
SharePoint hiện thời (current context): các đối tượng
trê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.js
Sử dụng thẻ <SharePoint:ScriptLink>
Trang 24Client 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\Web
Server 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):
– 13KB (20KB) SP.Runtime.js (SP.Runtime.debug.js):
– 68KB (108KB)
Trang 25Thủ 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ạo
var 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
//Lấy ra đối tượng web của site
var oWebsite = clientContext.get_web();
//Lấy ra tất cả các lists của web đó
this collList = oWebsite.get_lists();
Trang 26Thủ 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ột
enumerable 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ột
enumerable collection của các đối tượng
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)');
Trang 27Thủ 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ức
ExecuteQuery: trong NET API hay Silverlight API
Thực thi truy vấn bằng việc gọi phương thức
ExecuteQueryAsync: trong JavaScrip API hoặc SilverlightAPI
clientContext.Load(oWebsite);
//Thực thi truy vấn
clientContext.ExecuteQuery();
Thực thi truy vấn bằng việc gọi phương thức
ExecuteQuery: trong NET API hay Silverlight API
Thực thi truy vấn bằng việc gọi phương thức
ExecuteQueryAsync: trong JavaScrip API hoặc SilverlightAPI
clientContext.executeQueryAsync(
Function createDelegate( this , this onQuerySucceeded),
Function createDelegate( this , this onQueryFailed)); }
function onQuerySucceeded( sender , args) {…}
Trang 28Nhận các đối tượng từ phía Client
JavaScript API
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));
}
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));
}
Trang 29Nhậ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 ");
= 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);
Trang 30Chuỗi truy vấn trong JavaScript OM
JavaScript Client OM không hỗ trợ truy vấn LINQ
JavaScript sử dụng biểu thức chuỗi (string expression)
để truy vấn
Cú 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 LINQ
JavaScript sử dụng biểu thức chuỗi (string expression)
để truy vấn
Cú pháp đối với một list:
Cú pháp đối với list collection:
myListArray = clientContext.loadQuery(collList,
Tham khảo: http://msdn.microsoft.com/en-us/library/ee539350.aspx
Trang 31List oList = collList.GetByTitle(" My List ");
oList.Description = " Changed description ";
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();
Trang 32Thủ tục nhận một List Items
Để nhận về danh sách các Item trong một List, thông
thường chúng ta sử dụng CAML để chỉ ra các Item nào
sẽ 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 CAML
Gử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ông
thường chúng ta sử dụng CAML để chỉ ra các Item nào
sẽ 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 CAML
Gửi truy vấn này vào phương thức GetItems
Truy vấn CAML: http://msdn.microsoft.com/en-us/library/ms462365.aspx
Trang 34Demo:
Sử dụng JavaScript để truy vấn dữ liệu SharePoint
Trang 35Liên kết thực hành
Công việc thông thường
How to: Work with Websites
How to: Retrieve Lists
How to: Create, Update, and Delete Lists
How to: Retrieve List Items
How to: Create, Update, and Delete List Items
How to: Work with Users and Groups
How to: Work with Roles
How to: Break Role Assignment Inheritance
How to: Work with User Custom Actions
How to: Work with Web Parts on a Page
Công việc nâng cao
How to: Use Conditional Scope
How to: Use Exception Handling Scope
Code Sample: Silverlight List Viewer
Công việc thông thường
How to: Work with Websites
How to: Retrieve Lists
How to: Create, Update, and Delete Lists
How to: Retrieve List Items
How to: Create, Update, and Delete List Items
How to: Work with Users and Groups
How to: Work with Roles
How to: Break Role Assignment Inheritance
How to: Work with User Custom Actions
How to: Work with Web Parts on a Page
Công việc nâng cao
How to: Use Conditional Scope
How to: Use Exception Handling Scope
Code Sample: Silverlight List Viewer
Trang 36ECMAScript: 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ệu
ECMAScript: các ứng dụng web, với JavaScript
Trang 37Danh 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