Monday, 8 October 2012

Client Side Code Samples

Equivalent Objects in Server and Client OMs







SERVER OM
.NET MANAGED
ECMASCRIPT
Microsoft.SharePoint.SPContext
Microsoft.SharePoint.Client.ClientContext
SP.ClientContext
Microsoft.SharePoint.SPSite
Microsoft.SharePoint.Client.Site
SP.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
Microsoft.SharePoint.SPField
Microsoft.SharePoint.Client.Field
SP.Field
Which DLLs Implement the Client OM
Client OM located under  %Program Files%\Common Files\Microsoft Shared\Web Server Extensions\14\ISAPI .
There are two DLLs for the managed OM, Microsoft.SharePoint.Client and Microsoft .SharePoint.Client.Runtime .
Add references to VS.
Ex:1
Retrieving site titles and its Urls
ClientContext context = new Microsoft.SharePoint.Client.ClientContext("http://Mohan:8089");
Web site = context.Web;
context.Load(site);
context.ExecuteQuery();
MessageBox.Show("Title: " + site.Title + " Relative URL: " + site.ServerRelativeUrl);
context.Dispose();
List Collections
ListCollection lists = context.Web.Lists;
context.Load(lists);
context.ExecuteQuery();
MessageBox.Show(lists.Count.ToString());
foreach (Microsoft.SharePoint.Client.List list in lists)
{
MessageBox.Show("List: " + list.Title);
}
Ex:2 List the Properties
ClientContext context = new Microsoft.SharePoint.Client. ClientContext("http://Mohan:8089");
Web site = context.Web;
context.Load(site, s = > s.Title, s = > s.ServerRelativeUrl);
ListCollection lists = site.Lists;
context.Load(lists, ls = > ls.Include(l = > l.Title));
context.ExecuteQuery();
MessageBox.Show("Title: " + site.Title + " Relative URL: " + site.ServerRelativeUrl);
MessageBox.Show(lists.Count.ToString());
foreach (Microsoft.SharePoint.Client.List list in lists)
{
MessageBox.Show("List: " + list.Title);
}
context.Dispose();
Ex:3
Using CAML Query
ClientContext context = new Microsoft.SharePoint.Client. ClientContext("http://Mohan:8089");
List list = context.Web.Lists.GetByTitle("Announcements");
ListItemCollectionPosition itemPosition = null;
while (true)
{
CamlQuery camlQuery = new CamlQuery();
camlQuery.ListItemCollectionPosition = itemPosition;
camlQuery.ViewXml = @"
< View >
< Query >
< Where >
< IsNotNull >
< FieldRef Name='Title' / >
< /IsNotNull >
< /Where >
< /Query >
< RowLimit > 1000 < /RowLimit >
< /View > ";
ListItemCollection listItems = list.GetItems(camlQuery);
context.Load(listItems);
context.ExecuteQuery();
itemPosition = listItems.ListItemCollectionPosition;
foreach (ListItem listItem in listItems.ToList())
{
MessageBox.Show("Title: " + listItem["Title"]);
}
if (itemPosition == null)
{
break;
}
MessageBox.Show("Position: " + itemPosition.PagingInfo);
}
Ex:4
Using the LINQ
ClientContext context = new Microsoft.SharePoint.Client. ClientContext("http://Mohan:8089");
var query = from list
in context.Web.Lists
where list.Title != null
select list;
var result = context.LoadQuery(query);
context.ExecuteQuery();
foreach (List list in result)
{
MessageBox.Show("Title: " + list.Title);
}
context.Dispose();
Ex:-5
Creating Lists, Fields, and Items
ClientContext context = new Microsoft.SharePoint.Client. ClientContext("http://Mohan:8089");
Web site = context.Web;
ListCreationInformation listCreationInfo = new ListCreationInformation();
listCreationInfo.Title = "New List";
listCreationInfo.TemplateType = (int)ListTemplateType.GenericList;
List list = site.Lists.Add(listCreationInfo);
Field newField = list.Fields.AddFieldAsXml(@" < Field Type='Text' DisplayName='NewTextField' > < /Field > ", true, AddFieldOptions.AddToDefaultContentType);
ListItemCreationInformation itemCreationinfo = new ListItemCreationInformation();
ListItem item = list.AddItem(itemCreationinfo);
item["Title"] = "My New Item";
item["NewTextField"] = "My Text";
item.Update();
context.ExecuteQuery();
context.Dispose();
Ex:-6
Deleting Lists and Items
ClientContext context = new Microsoft.SharePoint.Client. ClientContext("http://Mohan:8089");
List list = context.Web.Lists.GetByTitle("New List");
CamlQuery camlQuery = new CamlQuery();
camlQuery.ViewXml = @"
< View >
< Query >
< Where >
< IsNotNull >
< FieldRef Name='Title' / >
< /IsNotNull >
< /Where >
< /Query >
< /View > ";
ListItemCollection listItems = list.GetItems(camlQuery);
context.Load(listItems, items = > items.Include(item = > item["Title"]));
context.ExecuteQuery();
foreach (ListItem listItem in listItems.ToList())
{
listItem.DeleteObject();
}
context.ExecuteQuery();
context.Dispose();
Advantages
Less Deployment Hassles: Using Client OM, you do not need to install the components required by the Server Object Model. Thus Client OM provides much ease to the end user.
Language Flexibility: We can use the following languages to work with the Client OM:
Microsoft .NET
Silverlight
ECMA Script (JavaScript /JScript)
Query Speed Optimizations: In the Client OM, reduced network traffic is attained using Query Optimizations. Thus the user will feel reduced round trips and other advantages like paged results, etc.