Pergunta

Como muitos de nós, eu sou verde, quando ele vem para o desenvolvimento do SharePoint.Eu tenho a tarefa de mover o MediaWiki conteúdo para um SharePoint wiki Corporativo.Neste momento eu não tenho acesso ao servidor o SP é e tem que fazer isso tudo de lado do cliente.Eu com êxito pode OBTER informações ou mesmo alterar uma página de publicação de conteúdo, mas eu não consigo criar uma nova página wiki com a Microsoft.Sharepoint.Cliente (eu tentei via ListItem etc.).

 ClientContext context = new ClientContext("http://<site>/");
 ListItem LItem = pagesList.GetItemById(8);
 LItem["PublishingPageContent"] = "This is my new value!!";
 LItem.Update();

 context.ExecuteQuery();  

O código acima funcionou muito bem!Então eu tentei:

  ListItemCreationInformation newPage = new ListItemCreationInformation();
  ListItem newpageitem = pagesList.AddItem(newPage);
  newpageitem["Title"] = "OtherCompany";
  newpageitem["PublishingPageContent"] = "Info for Other Company";
  newpageitem.Update();

  context.Load(newpageitem);

isso não funcionou tão grande.:-(

Alguém sabe se isso é mesmo possível fazer isso do lado do cliente?

Foi útil?

Solução

Como criar uma página Wiki, através de CSOM

/// <summary>
/// Create Wiki page
/// </summary>
/// <param name="pagesList">Wiki Pages list</param>
/// <param name="pageName">Wiki page name</param>
/// <param name="pageContent"></param>
public static ListItem CreateWikiPage(List pagesList, string pageName, string pageContent)
{
    const string templateRedirectionPageMarkup = "<%@ Page Inherits=\"Microsoft.SharePoint.Publishing.TemplateRedirectionPage,Microsoft.SharePoint.Publishing,Version=14.0.0.0,Culture=neutral,PublicKeyToken=71e9bce111e9429c\" %> <%@ Reference VirtualPath=\"~TemplatePageUrl\" %> <%@ Reference VirtualPath=\"~masterurl/custom.master\" %>";
    var pageInfo = new FileCreationInformation
      {
                Url = pageName,
                Content = Encoding.UTF8.GetBytes(templateRedirectionPageMarkup),
                Overwrite = true
      };

    var ctx = pagesList.Context;
    var wikiFile = pagesList.RootFolder.Files.Add(pageInfo);
    ctx.Load(wikiFile);
    ctx.ExecuteQuery();

    var wikiItem = wikiFile.ListItemAllFields;
    wikiItem["PublishingPageContent"] = pageContent;
    wikiItem["PublishingPageLayout"] = "/_catalogs/masterpage/EnterpriseWiki.aspx, Basic Page";
    wikiItem.Update();
    ctx.ExecuteQuery();
    return wikiItem;
}

Utilização

using (var ctx = new ClientContext(url))
{ 
    var pagesList = ctx.Web.Lists.GetByTitle("Pages"); 
    var wikiItem = CreateWikiPage(pagesList,"SharePoint Overview.aspx","Welcome to the SharePoint!");
} 
Licenciado em: CC-BY-SA com atribuição
Não afiliado a sharepoint.stackexchange
scroll top