Как оказалось задача программного создания страниц веб-частей не такая уж тривиальная, как может показаться на первый взгляд.
Решать её необходимо с помощью ProcessBatchData:
/// <summary> /// Create new webpart page /// </summary> /// <param name="list">List to keep page</param> /// <param name="pageTitle">Page title</param> /// <param name="layoutTemplate">Layout template id</param> /// <returns></returns> private static string CreateWebPartPage(SPList list, string pageTitle, int layoutTemplate) { const string newItemTemplate = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>" + "<Method ID=\"0,NewWebPage\">" + "<SetList Scope=\"Request\">{0}</SetList>" + "<SetVar Name=\"Cmd\">NewWebPage</SetVar>" + "<SetVar Name=\"ID\">New</SetVar>" + "<SetVar Name=\"Type\">WebPartPage</SetVar>" + "<SetVar Name=\"WebPartPageTemplate\">{2}</SetVar>" + "<SetVar Name=\"Overwrite\">true</SetVar>" + "<SetVar Name=\"Title\">{1}</SetVar>" + "</Method>"; var newItemXml = string.Format(newItemTemplate, list.ID, pageTitle, layoutTemplate); return list.ParentWeb.ProcessBatchData(newItemXml); }
Применение:
var web = SPContext.Current.Web; var pagesLibrary = web.GetList("Pages"); CreateWebPartPage(pagesLibrary, "MyPage", 2);
Номера шаблонов для LayoutTemplate:
- Целая страница, по вертикали
- Верхний колонтитул, нижний колонтитул, 3 столбца
- Верхний колонтитул, левый столбец, текстовая область
- Верхний колонтитул, правый столбец, текстовая область
- Верхний колонтитул, нижний колонтитул, 2 столбца, 4 строки
- Верхний колонтитул, нижний колонтитул, 4 столбца, верхняя строка
- Левый столбец, верхний колонтитул, нижний колонтитул, верхняя строка, 3 столбца
- Правый столбец, верхний колонтитул, нижний колонтитул, верхняя строка, 3 столбца
или тут.
Комментариев нет:
Отправить комментарий