четверг, 3 мая 2012 г.

Программное создание страниц веб-частей

Как оказалось задача программного создания страниц веб-частей не такая уж тривиальная, как может показаться на первый взгляд.

Решать её необходимо с помощью 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:

  1. Целая страница, по вертикали
  2. Верхний колонтитул, нижний колонтитул, 3 столбца
  3. Верхний колонтитул, левый столбец, текстовая область
  4. Верхний колонтитул, правый столбец, текстовая область
  5. Верхний колонтитул, нижний колонтитул, 2 столбца, 4 строки
  6. Верхний колонтитул, нижний колонтитул, 4 столбца, верхняя строка
  7. Левый столбец, верхний колонтитул, нижний колонтитул, верхняя строка, 3 столбца
  8. Правый столбец, верхний колонтитул, нижний колонтитул, верхняя строка, 3 столбца

или тут.

Комментариев нет:

Отправить комментарий