Программно создать страницу веб-части в Sharepoint - PullRequest
7 голосов
/ 11 июня 2009

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

Редактировать: Для простой установки WSS (не MOSS).

Ответы [ 3 ]

13 голосов
/ 11 июня 2009

Я собираюсь пойти по пути, что это не сайт для совместной работы / публикации, так как это не упомянуто и wss находится в списке тегов. Довольно неуклюжий по сравнению с использованием сайта публикации ...

Сначала выберите шаблон страницы веб-части, из которой вы хотите использовать:

C: \ Program Files \ Common Файлы \ Microsoft Shared \ веб-сервер Расширения \ 12 \ ШАБЛОН \ 1033 \ STS \ DOCTEMP \ SMARTPGS

Затем настройте поток для шаблона и используйте SPFileCollection.Add (), чтобы добавить его в библиотеку документов. Например:

string newFilename = "newpage.aspx";
string templateFilename = "spstd1.aspx";
string hive = SPUtility.GetGenericSetupPath("TEMPLATE\\1033\\STS\\DOCTEMP\\SMARTPGS\\");
FileStream stream = new FileStream(hive + templateFilename, FileMode.Open);
using (SPSite site = new SPSite("http://sharepoint"))
using (SPWeb web = site.OpenWeb())
{
    SPFolder libraryFolder = web.GetFolder("Document Library");
    SPFileCollection files = libraryFolder.Files;
    SPFile newFile = files.Add(newFilename, stream);
}

Примечание. В этом решении предполагается, что у вас установлена ​​версия US SharePoint, использующая код языка 1033. Просто измените путь, если другой.

2 голосов
/ 11 июня 2009
0 голосов
/ 06 марта 2018

Альтернативным решением принятого ответа от @AlexAngas является использование метода NewWebPage RPC-протокола SharePoint Foundation , как предлагается здесь .

private static void CreateWebPartPage(this SPWeb web, SPList list, string pageName, int layoutTemplate)
{
    const string newWPPage = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>" +
                                   "<Batch>" +
                                   "<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>" +
                                     "</Batch>";
    var newWPPageBatchXml = string.Format(newWPPage, list.ID, pageName, layoutTemplate);

    var result = web.ProcessBatchData(newWPPageBatchXml);
}

Использование вышеуказанного метода расширения:

web.CreateWebPartPage(yourList, "NewPage", 2);
...