Domanda

Nella mia situazione, sto la creazione di pagine web part con XsltListViewWebParts su di loro. Ho bisogno di impostare una vista predefinita su di loro, con il filtraggio custom / colonne configurazione in CAML. Pertanto, ho provato a spostare il XmlDefinition morse dalla parte web così posso solo riferire la definizione corretta.

Ho anche provato il seguente:

  • Salvataggio della XsltListViewWebPart con la corretta configurazione vista come un file .webpart, e l'aggiunta alla galleria di web part. Questa grande opera per il sito su cui è stato creato la parte, ma non appena ho ripristinarlo altrove; la definizione è azzerato. Si noti che quando esporto; Ho esplicitamente scegliere l'opzione di non usare la lista locale, ma un parente / Liste / lista Listname.

  • Quando ho programmazione aggiunge il webpart alla pagina, è anche possibile (con alcuni hack) per ottenere la vista incorporata. Sebbene sia possibile impostare alcune cose qui (come le colonne mostrate); questo non è l'ideale. Inoltre, sembra sempre tornare a visualizzare BaseTypeId = "0" che non ha paging. Non ho trovato alcuna opzione per cambiare questo.

  • La visualizzazione predefinita indicata (che io non voglio) sembrava essere la visualizzazione predefinita della lista stessa. Così ho provato a cambiare che prima di aggiungere il webpart alla pagina, ma questo non cambia nulla.

  • Infine, c'è un'opzione chiamata XmlDefinitionLink. Questo promette di caricare una definizione di vista personalizzato da un file XML. Dal momento che è praticamente quello che mi serve, ho provato anche questo. Non importa come impostare il tutto, semplicemente non funzionerà. Non ottengo errori, ma i risultati sia. Sembra che ci siano 0 risorse disponibili su come ottenere questo lavoro, un articolo di MSDN che mi dice che dovrebbe essere grande (che ovviamente non lo è).

Se qualcuno ha riutilizzato con successo il XSLTListViewWebPart con una definizione di visualizzazione personalizzata, si prega di condividere le tue conoscenze. Non mi dispiace scrivere un gruppo di classi di codice o involucro per arrivarci, a patto che so di poter realmente ottenere là. Ci sono voluti un sacco di tempo fino ad oggi, senza alcun risultato.

È stato utile?

Soluzione

preferisco farlo in codice in un fornitore di provisioning personalizzato (SPWebProvisioningProvider). Il seguente tipo di codice dovrebbe fare il trucco:

SPWeb web = SPContext.Current.Web;
SPList list = web.GetList("/sites/thesite/doclib");
SPView view = list.Views["TheView"];

string pageUrl = PublishingWeb.GetPagesListName(web) + "/thepage.aspx";
SPFile pageFile = web.GetFile(pageUrl);
pageFile.CheckOut();            
SPLimitedWebPartManager lwpm = pageFile.GetLimitedWebPartManager(PersonalizationScope.Shared);

XsltListViewWebPart wp = new XsltListViewWebPart();
wp.ListId = list.ID;
wp.Title = "Web Part Title";
wp.ChromeType = PartChromeType.TitleOnly;
wp.ViewGuid = view.ID.ToString();
wp.XmlDefinition = view.GetViewXml();
lwpm.AddWebPart(wp, "Header", 1);

pageFile.CheckIn("", SPCheckinType.MinorCheckIn);
pageFile.Publish("");

Altri suggerimenti

Sto lavorando sulla visualizzazione tag nuvola di categorie messaggi in un blog. Dal momento che i contenuti di interrogazione WebPart non supporta i campi LookupMulti, ho usato XsltListViewWebPart. Ecco i passaggi:

  • aggiungere una vista in "schema.xml" di tutti i messaggi con un nuovo "BaseViewID"
  • Set "XslLink" per una copia di "blog.xsl"
  • aggiungere necessario "FieldRef" in "ViewFields"
  • aggiungere un modello che corrisponde al "BaseViewID"
  • aggiungere il webpart quando provisionning pagina

    Non è possibile importare questa parte Web. True Nessuno false ]]>

Spero che questo aiuti.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a sharepoint.stackexchange
scroll top