sharepoint
Arbeta med Managed Client Side Object Model (CSOM)
Sök…
Anmärkningar
- De flesta exempel är från MSDN .
- För att skapa en .NET-hanterad klientapplikation som använder klientobjektmodellen måste du ange referenser till två klientbiblioteks-DLL: Microsoft.SharePoint.Client.dll och Microsoft.SharePoint.Client.Runtime.dll. Du kan hitta den i% ProgramFiles% \ Common Files \ Microsoft Shared \ webservertillägg \ 16 \ ISAPI-mappen eller din SharePoint-server.
- eller installera Microsoft.SharePointOnline.CSOM NuGet-paketet, som fungerar "på prem" såväl som i SP O365.
- De flesta egenskaper är värdeegenskaper och innan du öppnar dem måste du uttryckligen ringa clientContext.Load () och clientContext.ExecuteQuery (). Mer information här: Ring Load and ExekuteQuery innan du får tillgång till värdeegenskaper
Hej värld (får webbplatsens titel)
Alla versioner av SharePoint är baserade kring Sites (SPSite (SSOM) eller Site (CSOM)) och Webs (SPWeb (SSOM) eller Web (CSOM)). En webbplats återges inte i UI men den innehåller metadata och funktioner som tillämpas på dess barn. En webb är den grundläggande byggstenen som gör ett användargränssnitt för användaren att komma åt webbplatsen. Alla webbplatser har en rotweb som innehåller information och / eller metadata som dokumentbibliotek. Detta exempel visar ett grundläggande samtal för att hämta webben som finns på servern MyServer
under de virtuella sites
.
using System;
using Microsoft.SharePoint.Client;
namespace Microsoft.SDK.SharePointServices.Samples
{
class RetrieveWebsite
{
static void Main()
{
// This is the URL of the target web we are interested in.
string siteUrl = "http://MyServer/sites/MySiteCollection";
// The client context is allows us to queue up requests for the server
// Note that the context can only ask questions about the site it is created for
using (ClientContext clientContext = new ClientContext(siteUrl))
{
// To make it easier to read the code, pull the target web
// context off of the client context and store in a variable
Web oWebsite = clientContext.Web;
// Tell the client context we want to request information about the
// Web from the server
clientContext.Load(oWebsite);
// After we are done creating the batch of information we need from the sever,
// request the data from SharePoint
clientContext.ExecuteQuery();
// Print the results of the query
Console.WriteLine("Title: {0} Description: {1}", oWebsite.Title, oWebsite.Description);
}
}
}
}
Webb. Hämta egenskaperna på en webbplats
ClientContext clientContext = new ClientContext(siteUrl);
Web oWebsite = clientContext.Web;
clientContext.Load(oWebsite);
clientContext.ExecuteQuery();
Console.WriteLine("Title: {0} Description: {1}", oWebsite.Title, oWebsite.Description);
Webb. Hämtar endast specificerade egenskaper på en webbplats
ClientContext clientContext = new ClientContext(siteUrl);
Web oWebsite = clientContext.Web;
clientContext.Load(
oWebsite,
website => website.Title,
website => website.Created);
clientContext.ExecuteQuery();
Console.WriteLine("Title: {0} Created: {1}", oWebsite.Title, oWebsite.Created);
Webb. Uppdatering av titeln och beskrivningen på en webbplats
ClientContext clientContext = new ClientContext(siteUrl);
Web oWebsite = context.Web;
oWebsite.Title = "Updated Web Site";
oWebsite.Description = "This is an updated Web site.";
oWebsite.Update();
clientContext.ExecuteQuery();
Webb. Skapa en webbplats
string siteUrl = "http://MyServer/sites/MySiteCollection";
string blogDescription = "A new blog Web site.";
int blogLanguage = 1033;
string blogTitle = "Blog Web Site";
string blogUrl = "blogwebsite";
bool blogPermissions = false;
string webTemplate = "BLOG#0";
ClientContext clientContext = new ClientContext(siteUrl);
Web oWebsite = clientContext.Web;
WebCreationInformation webCreateInfo = new WebCreationInformation();
webCreateInfo.Description = blogDescription;
webCreateInfo.Language = blogLanguage;
webCreateInfo.Title = blogTitle;
webCreateInfo.Url = blogUrl;
webCreateInfo.UseSamePermissionsAsParentSite = blogPermissions;
webCreateInfo.WebTemplate = webTemplate;
Web oNewWebsite = oWebsite.Webs.Add(webCreateInfo);
clientContext.Load(
oNewWebsite,
website => website.ServerRelativeUrl,
website => website.Created);
clientContext.ExecuteQuery();
Console.WriteLine("Server-relative Url: {0} Created: {1}", oNewWebsite.ServerRelativeUrl, oNewWebsite.Created);
Lista. Hämtar alla egenskaper för alla listor på en webbplats
ClientContext clientContext = new ClientContext(siteUrl);
Web oWebsite = clientContext.Web;
ListCollection collList = oWebsite.Lists;
clientContext.Load(collList);
clientContext.ExecuteQuery();
foreach (List oList in collList)
{
Console.WriteLine("Title: {0} Created: {1}", oList.Title, oList.Created.ToString());
}
Lista. Hämtar endast specificerade egenskaper för listor
ClientContext clientContext = new ClientContext(siteUrl);
Web oWebsite = clientContext.Web;
ListCollection collList = oWebsite.Lists;
clientContext.Load(
collList,
lists => lists.Include(
list => list.Title,
list => list.Id));
clientContext.ExecuteQuery();
foreach (List oList in collList)
{
Console.WriteLine("Title: {0} ID: {1}", oList.Title, oList.Id.ToString("D"));
}
Lista. Lagring av hämtade listor i en samling
ClientContext clientContext = new ClientContext(siteUrl);
Web oWebsite = clientContext.Web;
ListCollection collList = oWebsite.Lists;
IEnumerable<List> resultCollection = clientContext.LoadQuery(
collList.Include(
list=>list.Title,
list=>list.Id));
clientContext.ExecuteQuery();
foreach (List oList in resultCollection)
{
Console.WriteLine("Title: {0} ID: {1}", oList.Title, oList.Id.ToString("D"));
}
Lista. Hämtar listfält från en webbplats
ClientContext clientContext = new ClientContext(siteUrl);
Web oWebsite = clientContext.Web;
ListCollection collList = oWebsite.Lists;
IEnumerable<SP.List> listInfo = clientContext.LoadQuery(
collList.Include(
list => list.Title,
list => list.Fields.Include(
field => field.Title,
field => field.InternalName)));
clientContext.ExecuteQuery();
foreach (SP.List oList in listInfo)
{
FieldCollection collField = oList.Fields;
foreach (SP.Field oField in collField)
{
Regex regEx = new Regex("name", RegexOptions.IgnoreCase);
if (regEx.IsMatch(oField.InternalName))
{
Console.WriteLine("List: {0} \n\t Field Title: {1} \n\t Field Internal Name: {2}",
oList.Title, oField.Title, oField.InternalName);
}
}
}
Lista. Skapa och uppdatera en lista
ClientContext clientContext = new ClientContext(siteUrl);
Web oWebsite = clientContext.Web;
ListCreationInformation listCreationInfo = new ListCreationInformation();
listCreationInfo.Title = "My Announcements List";
listCreationInfo.TemplateType = (int)ListTemplateType.Announcements;
List oList = oWebsite.Lists.Add(listCreationInfo);
clientContext.ExecuteQuery();
Lista. Lägga till ett fält i en lista
ClientContext clientContext = new ClientContext(siteUrl);
SP.List oList = clientContext.Web.Lists.GetByTitle("Announcements");
SP.Field oField = oList.Fields.AddFieldAsXml("<Field DisplayName='MyField' Type='Number' />",
true, AddFieldOptions.DefaultValue);
SP.FieldNumber fieldNumber = clientContext.CastTo<FieldNumber>(oField);
fieldNumber.MaximumValue = 100;
fieldNumber.MinimumValue = 35;
fieldNumber.Update();
clientContext.ExecuteQuery();
Lista. Radera en lista
ClientContext clientContext = new ClientContext(siteUrl);
Web oWebsite = clientContext.Web;
List oList = oWebsite.Lists.GetByTitle("My Announcements List");
oList.DeleteObject();
clientContext.ExecuteQuery();
Artikel. Hämtar objekt från en lista
ClientContext clientContext = new ClientContext(siteUrl);
SP.List oList = clientContext.Web.Lists.GetByTitle("Announcements");
CamlQuery camlQuery = new CamlQuery();
camlQuery.ViewXml = "<View><Query><Where><Geq><FieldRef Name='ID'/>" +
"<Value Type='Number'>10</Value></Geq></Where></Query><RowLimit>100</RowLimit></View>";
ListItemCollection collListItem = oList.GetItems(camlQuery);
clientContext.Load(collListItem);
clientContext.ExecuteQuery();
foreach (ListItem oListItem in collListItem)
{
Console.WriteLine("ID: {0} \nTitle: {1} \nBody: {2}", oListItem.Id, oListItem["Title"], oListItem["Body"]);
}
Artikel. Hämta objekt (med inkludera metoden)
Detta exempel visar hur du hämtar objekt från servern och får djupare egenskaper för varje listobjekt. Som standard returnerar servern bara den minsta mängden data som representerar objektet. Det är upp till den som ringer att begära ytterligare information från servern.
ClientContext clientContext = new ClientContext(siteUrl);
List oList = clientContext.Web.Lists.GetByTitle("Announcements");
CamlQuery camlQuery = new CamlQuery();
camlQuery.ViewXml = "<View><RowLimit>100</RowLimit></View>";
ListItemCollection collListItem = oList.GetItems(camlQuery);
// The first line of this request indicates the list item collection to load from the server
// The second line uses a lambda to request that from the server
// also include additional properties in the response
// The third though fifth lines are the properties being requested from the server
clientContext.Load(collListItem,
items => items.Include(
item => item.Id,
item => item.DisplayName,
item => item.HasUniqueRoleAssignments));
clientContext.ExecuteQuery();
foreach (ListItem oListItem in collListItem)
{
Console.WriteLine("ID: {0} \nDisplay name: {1} \nUnique role assignments: {2}",
oListItem.Id, oListItem.DisplayName, oListItem.HasUniqueRoleAssignments);
}
Artikel. Hämta specifika fält från ett angivet antal objekt
ClientContext clientContext = new ClientContext(siteUrl);
SP.List oList = clientContext.Web.Lists.GetByTitle("Announcements");
CamlQuery camlQuery = new CamlQuery();
ListItemCollection collListItem = oList.GetItems(camlQuery);
clientContext.Load(
collListItem,
items => items.Take(5).Include(
item => item["Title"],
item => item["Body"]));
clientContext.ExecuteQuery();
foreach (ListItem oListItem in collListItem)
{
Console.WriteLine("Title: {0} \nBody: {1}\n", oListItem["Title"], oListItem["Body"]);
}
Artikel. Hämtar objekt från alla listor på en webbplats
ClientContext clientContext = new ClientContext(siteUrl);
ListCollection collList = clientContext.Web.Lists;
clientContext.Load(
collList,
lists => lists.Where(
list => list.Hidden == false).Include(
list => list.Title,
list => list.Items.Take(10)));
clientContext.ExecuteQuery();
foreach (SP.List oList in clientContext.Web.Lists)
{
string listTitle = oList.Title;
int itemCount = oList.Items.Count;
Console.WriteLine("List {0} returned with {1} items", listTitle, itemCount);
}
Artikel. Hämtar objekt med hjälp av listobjektets insamlingsposition
ClientContext clientContext = new ClientContext(siteUrl);
SP.List oList = clientContext.Web.Lists.GetByTitle("Announcements");
ListItemCollectionPosition itemPosition = null;
while (true)
{
CamlQuery camlQuery = new CamlQuery();
camlQuery.ListItemCollectionPosition = itemPosition;
camlQuery.ViewXml = "<View><ViewFields><FieldRef Name='ID'/>" +
"<FieldRef Name='Title'/><FieldRef Name='Body'/>" +
"</ViewFields><RowLimit>5</RowLimit></View>";
ListItemCollection collListItem = oList.GetItems(camlQuery);
clientContext.Load(collListItem);
clientContext.ExecuteQuery();
itemPosition = collListItem.ListItemCollectionPosition;
foreach (ListItem oListItem in collListItem)
{
Console.WriteLine("Title: {0}: \nBody: {1}", oListItem["Title"], oListItem["Body"]);
}
if (itemPosition == null)
{
break;
}
Console.WriteLine("\n" + itemPosition.PagingInfo + "\n");
}
Artikel. Skapa ett listobjekt
När du skapar ett nytt listobjekt kan dess fält ställas in med syntax som liknar strängmatriser. Observera att dessa fält inte skapas i farten och definieras av schemat i listan. Dessa fält (eller kolumner) måste existera på servern, annars skapas skapandet. Alla listobjekt har titelfältet. Vissa listor kan ha obligatoriska fält som måste fyllas i innan objektet kommer att publiceras i listan.
I det här exemplet använder listan meddelandemallen. Förutom titelfältet innehåller listan det kroppsfält som visar innehållet i meddelandet på listan.
ClientContext clientContext = new ClientContext(siteUrl);
List oList = clientContext.Web.Lists.GetByTitle("Announcements");
ListItemCreationInformation itemCreateInfo = new ListItemCreationInformation();
ListItem oListItem = oList.AddItem(itemCreateInfo);
oListItem["Title"] = "My New Item!";
oListItem["Body"] = "Hello World!";
oListItem.Update();
clientContext.ExecuteQuery();
Artikel. Uppdatera ett listobjekt
ClientContext clientContext = new ClientContext(siteUrl);
SP.List oList = clientContext.Web.Lists.GetByTitle("Announcements");
ListItem oListItem = oList.Items.GetById(3);
oListItem["Title"] = "My Updated Title.";
oListItem.Update();
clientContext.ExecuteQuery();
Artikel. Radera ett listobjekt
ClientContext clientContext = new ClientContext(siteUrl);
SP.List oList = clientContext.Web.Lists.GetByTitle("Announcements");
ListItem oListItem = oList.GetItemById(2);
oListItem.DeleteObject();
clientContext.ExecuteQuery();
Grupper. Hämtar alla användare från en SharePoint-grupp
ClientContext clientContext = new ClientContext("http://MyServer/sites/MySiteCollection");
GroupCollection collGroup = clientContext.Web.SiteGroups;
Group oGroup = collGroup.GetById(7);
UserCollection collUser = oGroup.Users;
clientContext.Load(collUser);
clientContext.ExecuteQuery();
foreach (User oUser in collUser)
{
Console.WriteLine("User: {0} ID: {1} Email: {2} Login Name: {3}",
oUser.Title, oUser.Id, oUser.Email, oUser.LoginName);
}
Grupper. Hämta specifika egenskaper hos användare
ClientContext clientContext = new ClientContext("http://MyServer/sites/MySiteCollection");
GroupCollection collGroup = clientContext.Web.SiteGroups;
Group oGroup = collGroup.GetById(7);
UserCollection collUser = oGroup.Users;
clientContext.Load(collUser,
users => users.Include(
user => user.Title,
user => user.LoginName,
user => user.Email));
clientContext.ExecuteQuery();
foreach (User oUser in collUser)
{
Console.WriteLine("User: {0} Login name: {1} Email: {2}",
oUser.Title, oUser.LoginName, oUser.Email);
}
Grupper. Hämtar alla användare i alla grupper i en webbplatssamling
ClientContext clientContext = new ClientContext("http://MyServer/sites/MySiteCollection");
GroupCollection collGroup = clientContext.Web.SiteGroups;
clientContext.Load(collGroup);
clientContext.Load(collGroup,
groups => groups.Include(
group => group.Users));
clientContext.ExecuteQuery();
foreach (Group oGroup in collGroup)
{
UserCollection collUser = oGroup.Users;
foreach (User oUser in collUser)
{
Console.WriteLine("Group ID: {0} Group Title: {1} User: {2} Login Name: {3}",
oGroup.Id, oGroup.Title, oUser.Title, oUser.LoginName);
}
}
Grupper. Lägga till en användare i en SharePoint-grupp
ClientContext clientContext = new ClientContext("http://MyServer/sites/MySiteCollection ");
GroupCollection collGroup = clientContext.Web.SiteGroups;
Group oGroup = collGroup.GetById(6);
UserCreationInformation userCreationInfo = new UserCreationInformation();
userCreationInfo.Email = "[email protected]";
userCreationInfo.LoginName = @"DOMAIN\alias";
userCreationInfo.Title = "John";
User oUser = oGroup.Users.Add(userCreationInfo);
clientContext.ExecuteQuery();
Roller. Skapa en rolldefinition
ClientContext oClientContext = new ClientContext("http://MyServer/sites/MySiteCollection");
Web oWebsite = clientContext.Web;
BasePermissions permissions = new BasePermissions();
permissions.Set(PermissionKind.CreateAlerts);
permissions.Set(PermissionKind.ManageAlerts);
RoleDefinitionCreationInformation roleCreationInfo = new RoleDefinitionCreationInformation();
roleCreationInfo.BasePermissions = permissions;
roleCreationInfo.Description = "A new role with create and manage alerts permission";
roleCreationInfo.Name = "Create and Manage Alerts";
roleCreationInfo.Order = 4;
RoleDefinition oRoleDefinition = oWebsite.RoleDefinitions.Add(roleCreationInfo);
clientContext.ExecuteQuery();
Console.WriteLine("{0} role created.", oRoleDefinition.Name);
Roller. Tilldela en användare till en roll på en webbplats
ClientContext oClientContext = new ClientContext("http://MyServer/sites/MySiteCollection/MyWebSite");
Web oWebsite = clientContext.Web;
Principal oUser = oWebsite.SiteUsers.GetByLoginName(@"DOMAIN\alias");
RoleDefinition oRoleDefinition = oWebsite.RoleDefinitions.GetByName("Create and Manage Alerts");
RoleDefinitionBindingCollection collRoleDefinitionBinding = new RoleDefinitionBindingCollection(clientContext);
collRoleDefinitionBinding.Add(oRoleDefinition);
RoleAssignment oRoleAssignment = oWebsite.RoleAssignments.Add(oUser, collRoleDefinitionBinding);
clientContext.Load(oUser,
user => user.Title);
clientContext.Load(oRoleDefinition,
role => role.Name);
clientContext.ExecuteQuery();
Console.WriteLine("{0} added with {1} role.", oUser.Title, oRoleDefinition.Name);
Roller. Skapa en SharePoint-grupp och lägga till gruppen i en roll
ClientContext oClientContext = new ClientContext("http://MyServer/sites/MySiteCollection/MyWebSite");
Web oWebsite = clientContext.Web;
GroupCreationInformation groupCreationInfo = new GroupCreationInformation();
groupCreationInfo.Title = "My New Group";
groupCreationInfo.Description = "Description of new group.";
Group oGroup = oWebsite.SiteGroups.Add(groupCreationInfo);
RoleDefinitionBindingCollection collRoleDefinitionBinding = new RoleDefinitionBindingCollection(clientContext);
RoleDefinition oRoleDefinition = oWebsite.RoleDefinitions.GetByType(RoleType.Contributor);
collRoleDefinitionBinding.Add(oRoleDefinition);
oWebsite.RoleAssignments.Add(oGroup, collRoleDefinitionBinding);
clientContext.Load(oGroup,
group => group.Title);
clientContext.Load(oRoleDefinition,
role => role.Name);
clientContext.ExecuteQuery();
Console.WriteLine("{0} created and assigned {1} role.", oGroup.Title, oRoleDefinition.Name); }
Behörigheter. Att bryta säkerhetsarvet till en lista
string siteUrl = "http://MyServer/sites/MySiteCollection";
ClientContext oContext = new ClientContext(siteUrl);
SP.List oList = oContext.Web.Lists.GetByTitle("Announcements");
oList.BreakRoleInheritance(true, false);
oContext.ExecuteQuery();
Behörigheter. Att bryta säkerhetsarvet till ett dokument och lägga till en användare som läsare
ClientContext clientContext = new ClientContext(siteUrl);
SP.List oList = clientContext.Web.Lists.GetByTitle("MyList");
int itemId = 3;
ListItem oListItem = oList.Items.GetById(itemId);
oListItem.BreakRoleInheritance(false);
User oUser = clientContext.Web.SiteUsers.GetByLoginName(@"DOMAIN\alias");
RoleDefinitionBindingCollection collRoleDefinitionBinding = new RoleDefinitionBindingCollection(clientContext);
collRoleDefinitionBinding.Add(clientContext.Web.RoleDefinitions.GetByType(RoleType.Reader));
oListItem.RoleAssignments.Add(oUser, collRoleDefinitionBinding);
clientContext.ExecuteQuery();
Behörigheter. Att bryta säkerhetsarvet till ett dokument och ändra behörigheterna för en användare
ClientContext clientContext = new ClientContext(siteUrl);
SP.List oList = clientContext.Web.Lists.GetByTitle("MyList");
int itemId = 2;
ListItem oListItem = oList.Items.GetById(itemId);
oListItem.BreakRoleInheritance(true);
User oUser = clientContext.Web.SiteUsers.GetByLoginName(@"DOMAIN\alias");
oListItem.RoleAssignments.GetByPrincipal(oUser).DeleteObject();
RoleDefinitionBindingCollection collRollDefinitionBinding = new RoleDefinitionBindingCollection(clientContext);
collRollDefinitionBinding.Add(clientContext.Web.RoleDefinitions.GetByType(RoleType.Reader));
oListItem.RoleAssignments.Add(oUser, collRollDefinitionBinding);
clientContext.ExecuteQuery();
Anpassad åtgärd. Lägga till en användaranpassad åtgärd för listobjekt
string urlWebsite = "http://MyServer/sites/MySiteCollection";
ClientContext clientContext = new ClientContext(urlWebsite);
Web oWebsite = clientContext.Web;
List oList = oWebsite.Lists.GetByTitle("My List");
UserCustomActionCollection collUserCustomAction = oList.UserCustomActions;
UserCustomAction oUserCustomAction = collUserCustomAction.Add();
oUserCustomAction.Location = "EditControlBlock";
oUserCustomAction.Sequence = 100;
oUserCustomAction.Title = "My First User Custom Action";
oUserCustomAction.Url = urlWebsite + @"/_layouts/MyPage.aspx";
oUserCustomAction.Update();
clientContext.Load(oList,
list => list.UserCustomActions);
clientContext.ExecuteQuery();
Anpassad åtgärd. Ändra en användares anpassade åtgärd
string urlWebsite = "http://MyServer/sites/SiteCollection";
ClientContext clientContext = new ClientContext(urlWebsite);
Web oWebsite = clientContext.Web;
List oList = oWebsite.Lists.GetByTitle("My List");
UserCustomActionCollection collUserCustomAction = oList.UserCustomActions;
clientContext.Load(collUserCustomAction,
userCustomActions => userCustomActions.Include(
userCustomAction => userCustomAction.Title));
clientContext.ExecuteQuery();
foreach (UserCustomAction oUserCustomAction in collUserCustomAction)
{
if (oUserCustomAction.Title == "My First User Custom Action")
{
oUserCustomAction.ImageUrl = "http://MyServer/_layouts/images/MyIcon.png";
oUserCustomAction.Update();
clientContext.ExecuteQuery();
}
}
Anpassad åtgärd. Lägga till en användaranpassad åtgärd till webbplatsens handlingar på en webbplats
string urlWebsite = "http://MyServer/sites/MySiteCollection";
ClientContext clientContext = new ClientContext(urlWebsite);
Web oWebsite = clientContext.Web;
UserCustomActionCollection collUserCustomAction = oWebsite.UserCustomActions;
UserCustomAction oUserCustomAction = collUserCustomAction.Add();
oUserCustomAction.Location = "Microsoft.SharePoint.StandardMenu";
oUserCustomAction.Group = "SiteActions";
oUserCustomAction.Sequence = 101;
oUserCustomAction.Title = "Website User Custom Action";
oUserCustomAction.Description = "This description appears on the Site Actions menu.";
oUserCustomAction.Url = urlWebsite + @"/_layouts/MyPage.aspx";
oUserCustomAction.Update();
clientContext.Load(oWebsite,
webSite => webSite.UserCustomActions);
clientContext.ExecuteQuery();
Webbdel. Uppdatering av titeln på en webbdel
ClientContext oClientContext = new ClientContext("http://MyServer/sites/MySiteCollection");
File oFile = oClientContext.Web.GetFileByServerRelativeUrl("Default.aspx");
LimitedWebPartManager limitedWebPartManager = oFile.GetLimitedWebPartManager(PersonalizationScope.Shared);
oClientContext.Load(limitedWebPartManager.WebParts,
wps => wps.Include(
wp => wp.WebPart.Title));
oClientContext.ExecuteQuery();
if (limitedWebPartManager.WebParts.Count == 0)
{
throw new Exception("No Web Parts on this page.");
}
WebPartDefinition oWebPartDefinition = limitedWebPartManager.WebParts[1];
WebPart oWebPart = oWebPartDefinition.WebPart;
oWebPart.Title = "My New Web Part Title";
oWebPartDefinition.SaveWebPartChanges();
oClientContext.ExecuteQuery();
Webbdel. Lägga till en webbdel på en sida
ClientContext oClientContext = new ClientContext("http://MyServer/sites/MySiteCollection");
File oFile = oClientContext.Web.GetFileByServerRelativeUrl("Default.aspx");
LimitedWebPartManager limitedWebPartManager = oFile.GetLimitedWebPartManager(PersonalizationScope.Shared);
string xmlWebPart = "<?xml version=\"1.0\" encoding=\"utf-8\"?>" +
"<WebPart xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"" +
" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\"" +
" xmlns=\"http://schemas.microsoft.com/WebPart/v2\">" +
"<Title>My Web Part</Title><FrameType>Default</FrameType>" +
"<Description>Use for formatted text, tables, and images.</Description>" +
"<IsIncluded>true</IsIncluded><ZoneID></ZoneID><PartOrder>0</PartOrder>" +
"<FrameState>Normal</FrameState><Height /><Width /><AllowRemove>true</AllowRemove>" +
"<AllowZoneChange>true</AllowZoneChange><AllowMinimize>true</AllowMinimize>" +
"<AllowConnect>true</AllowConnect><AllowEdit>true</AllowEdit>" +
"<AllowHide>true</AllowHide><IsVisible>true</IsVisible><DetailLink /><HelpLink />" +
"<HelpMode>Modeless</HelpMode><Dir>Default</Dir><PartImageSmall />" +
"<MissingAssembly>Cannot import this Web Part.</MissingAssembly>" +
"<PartImageLarge>/_layouts/images/mscontl.gif</PartImageLarge><IsIncludedFilter />" +
"<Assembly>Microsoft.SharePoint, Version=13.0.0.0, Culture=neutral, " +
"PublicKeyToken=94de0004b6e3fcc5</Assembly>" +
"<TypeName>Microsoft.SharePoint.WebPartPages.ContentEditorWebPart</TypeName>" +
"<ContentLink xmlns=\"http://schemas.microsoft.com/WebPart/v2/ContentEditor\" />" +
"<Content xmlns=\"http://schemas.microsoft.com/WebPart/v2/ContentEditor\">" +
"<![CDATA[This is a first paragraph!<DIV> </DIV>And this is a second paragraph.]]></Content>" +
"<PartStorage xmlns=\"http://schemas.microsoft.com/WebPart/v2/ContentEditor\" /></WebPart>";
WebPartDefinition oWebPartDefinition = limitedWebPartManager.ImportWebPart(xmlWebPart);
limitedWebPartManager.AddWebPart(oWebPartDefinition.WebPart, "Left", 1);
oClientContext.ExecuteQuery();
Webbdel. Radera en webbdel från en sida
ClientContext oClientContext = new ClientContext("http://MyServer/sites/MySiteCollection");
File oFile = oClientContext.Web.GetFileByServerRelativeUrl("/sites/MySiteCollection/SitePages/Home.aspx ");
LimitedWebPartManager limitedWebPartManager = oFile.GetLimitedWebPartManager(PersonalizationScope.Shared);
oClientContext.Load(limitedWebPartManager.WebParts);
oClientContext.ExecuteQuery();
if (limitedWebPartManager.WebParts.Count == 0)
{
throw new Exception("No Web Parts to delete.");
}
WebPartDefinition webPartDefinition = limitedWebPartManager.WebParts[0];
webPartDefinition.DeleteWebPart();
oClientContext.ExecuteQuery();
Sammanhang. Använda en referenscache för förhöjd körning av kod
Medan serverns sidkod kan köras med förhöjda privilegier, finns det inte en likvärdig metod för att höja privilegier i klientsidan kod (av uppenbara säkerhetsskäl). Som ett alternativ kan du ange referenser för att emulera åtkomsten för ett specifikt användar- eller servicekonto.
Om du vill ange referenser ska du bygga och fylla i ett CredentialCache
objekt och tilldela det sedan till ditt ClientContext
objektets Credentials
egenskap.
Exemplet nedan emulerar applikationspoolkontot och antar en lokal SharePoint 2013-miljö med NTLM.
using System.Net;
using Microsoft.SharePoint.Client;
using (ClientContext ctx = new ClientContext("https://onpremises.local/sites/demo/"))
{
// need the web object
ctx.Load(ctx.Web);
ctx.ExecuteQuery();
// here the default network credentials relate to the identity of the account
// running the App Pool of your web application.
CredentialCache credCache = new CredentialCache();
cc.Add(new Uri(ctx.Web.Url), "NTLM", CredentialCache.DefaultNetworkCredentials);
ctx.Credentials = credCache;
ctx.AuthenticationMode = ClientAuthentication.Default;
ctx.ExecuteQuery();
// do stuff as elevated app pool account
}
Observera att beviljande av förhöjda behörighetsbehörighet för applikationspoolkontot i SharePoint strider mot bästa praxis, men att alla relevanta nätverksuppgifter kan användas i stället.