Pergunta

Existe uma maneira simples de adicionar uma página Web Part para um site do SharePoint programaticamente, usando o modelo de objeto ou serviços web? Parece simples e direta para criar listas e adicionar peças Web dessa maneira, mas não consigo encontrar um exemplo de como criar uma página de conteúdo.

Edit:. Para uma instalação de WSS simples (não MOSS)

Foi útil?

Solução

Eu vou tomar o caminho que esta não é uma colaboração / site publicar como este não é mencionado e WSS está na lista tag. desajeitado muito em comparação ao uso de um site de publicação ...

Primeiro, escolha o modelo de página web part que você gostaria de usar a partir de:

C: \ Program Files \ Common servidor web Files \ Microsoft Shared \ extensions \ 12 \ TEMPLATE \ 1033 \ STS \ DOCTEMP \ SMARTPGS

Em seguida, criar um fluxo para o modelo e usar SPFileCollection.Add () para adicioná-lo à sua biblioteca de documentos. Por exemplo:

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);
}

Nota: Esta solução pressupõe que você tenha a versão dos EUA SharePoint instalado que usa o código do idioma 1033. Basta alterar o caminho se diferente.

Outras dicas

Uma solução alternativa para a resposta aceita de @AlexAngas é usar a NewWebPage método do SharePoint Foundation Protocolo RPC , como sugerido aqui .

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);
}

O uso do método de extensão acima:

web.CreateWebPartPage(yourList, "NewPage", 2);
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top