使用csom

时间:2015-07-22 01:43:36

标签: sharepoint sharepoint-online

有没有人知道是否可以在Office 365中使用CSOM导出Web部件。我想要启用的方案是将发布页面(嵌入了Web部件)从一个Office 365租赁移动到另一个。我最初的研究表明,在客户端代码中是不可能的 - 任何帮助都是值得赞赏的。

2 个答案:

答案 0 :(得分:1)

以下代码可以解决问题。

 var limitedWebPartManager = file.GetLimitedWebPartManager(PersonalizationScope.Shared);
        var webPartDefinitons = limitedWebPartManager.WebParts;
        clientContext.LoadAndExecute(webPartDefinitons);
        foreach (var webpartDefintion in webPartDefinitons)
        {
            try
            {
                var webPartId = webpartDefintion.Id;
                var webPartXML = limitedWebPartManager.ExportWebPart(webPartId);
                clientContext.ExecuteQuery();
                clientContext.Load(webpartDefintion, def => def.ZoneId, def => def.Id);
                clientContext.LoadAndExecute(webpartDefintion.WebPart, w => w.Title, w => w.ZoneIndex, w => w.Properties);

            }
            catch (Exception exception)
            {
                Console.WriteLine(exception);
            }
        }

答案 1 :(得分:0)

SharePoint仅通过CSOM导出LimitedWebPartManager。 它非常有限(因此名称)并且只能实现有限的行动。 (更改WebPart的标题,阅读信息)。

但是,我建议您使用/_vti_bin/webpartpages.asmx服务。 (添加服务参考,http://yoursharepoint/_vti_bin/webpartpages.asmx

var credentials = new NetworkCredential();
credentials.UserName = "username";
credentials.Password = "secret";
credentials.Domain = "domain";

var svc = new WebPartPagesSvc.WebPartPagesWebService();
svc.Credentials = credentials;

var result = svc.GetWebPartPage(filename, WebPartPages2Svc.SPWebServiceBehavior.Version3);

Console.Write(result);

希望得到这个帮助。