【发布时间】:2017-12-30 04:17:02
【问题描述】:
在我的 sharepoint 站点部署期间,我创建了一些列表,我想以编程方式将它们添加到主页,但我找不到任何有用的东西。
现在,我收到以下错误:
The property or field 'SchemaXml' has not been initialized.
It has not been requested or the request has not been executed.
It may need to be explicitly requested.'
这里是在部署期间创建列表的代码:
ArrayList arrFields = new ArrayList();
arrFields.Add(fieldBody);
arrFields.Add(fieldPublishStartDate);
arrFields.Add(fieldPublishStopDate);
arrFields.Add(fieldReadMore);
//create the home page content lists
List FeaturedStories = CreateList(ctx, currentWeb, "Featured Stories", ListTemplateType.PictureLibrary, arrFields, true);
CreateList(ctx, currentWeb, "Team Spotlight", ListTemplateType.PictureLibrary, arrFields, true);
List quickLinks = CreateList(ctx, currentWeb, "Quick Links", ListTemplateType.Links, null, true);
List resourceLinks = CreateList(ctx, currentWeb, "Resource Links", ListTemplateType.Links, null, true);
arrFields.Remove(fieldBody);
List announcementsList = CreateList(ctx, currentWeb, "News and Announcements", ListTemplateType.Announcements, arrFields, true);
List eventsCalendarList = CreateList(ctx, currentWeb, "Events Calendar", ListTemplateType.Events, arrFields, true);
ctx.Load(currentWeb, w => w.Lists);
ctx.ExecuteQuery();
这是我尝试将列表之一添加到主页的代码:
var pageUrl = "/sites/practice3/SitePages/Home.aspx";
var xml = ctx.Web.Lists.GetByTitle("News and Announcements").SchemaXml;
var web = ctx.Web;
var lists = web.Lists;
ctx.Load(lists);
ctx.ExecuteQuery();
AddWebPart(ctx, pageUrl, xml);
这是AddWebPart的方法,但我无法测试这是否可行,因为我无法访问代码:
public static void AddWebPart(ClientContext context, string pageUrl, string xml)
{
var page = context.Web.GetFileByServerRelativeUrl(pageUrl);
var webpartManager = page.GetLimitedWebPartManager(PersonalizationScope.Shared);
context.Load(webpartManager);
context.Load(webpartManager.WebParts);
context.ExecuteQuery();
WebPartDefinition webpartDef = webpartManager.ImportWebPart(xml);
WebPartDefinition webpart = webpartManager.AddWebPart(webpartDef.WebPart, "mainContent", 0);
context.Load(webpartDef);
context.ExecuteQuery();
//webpartManager.ImportWebPart(xml);
//context.ExecuteQuery();
Console.WriteLine("Hit any key to continue...");
Console.ReadKey();
Console.ReadKey();
}
感谢您的帮助!
【问题讨论】:
标签: c# sharepoint deployment web-parts csom