2009-06-11 18 views
7

C'è un modo semplice per aggiungere una pagina web part a un sito Sharepoint a livello di codice, utilizzando il modello di oggetti oi servizi Web? Sembra semplice creare elenchi e aggiungere parti web in questo modo, ma non riesco a trovare un esempio di come creare una pagina di contenuto.Creare un'istanza di una pagina web part in SharePoint Sharepoint

Modifica: per una semplice installazione WSS (non MOSS).

risposta

13

ho intenzione di prendere la strada che questo non è un sito di collaborazione/pubblicazione come questo non è menzionato e wss è nella lista dei tag. Abbastanza goffo rispetto all'utilizzo di un sito di pubblicazione ...

prima scegliere il modello di pagina web part che si desidera utilizzare da:

C: \ Program Files \ Common Files \ Microsoft Shared \ web server estensioni \ 12 \ tEMPLATE \ 1033 \ STS \ DOCTEMP \ SMARTPGS

Poi impostazione di un flusso al modello e usare SPFileCollection.Add() per aggiungerlo alla tua libreria di documenti. Ad esempio:

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: questa soluzione presuppone che sia stata installata la versione di SharePoint USA che utilizza il codice di lingua 1033. Basta cambiare il percorso se diverso.

+0

Funziona: D !! Buon post Alex :-) !! – Muhammedh

+0

@Alex È possibile impostare la pagina master di newpage.aspx su LikeMasterPageName.master? Come dovrei includerlo nel codice? –

0

Una soluzione alternativa alla risposta accettata da @AlexAngas è utilizzare NewWebPage method del SharePoint Foundation RPC Protocol, come suggerito here.

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

Uso del metodo di estensione di cui sopra:

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