Il blog di Giuseppe Marchi - SharePoint MVP
NAVIGATION - SEARCH

Inserire una XsltListViewWebPart via codice

Vi lascio qui un breve pezzo di codice, utile ad inserire una XsltListViewWebPart via codice all'interno di una web part page.
Ve lo lascio perchè per inserire una web part di questo tipo, dobbiamo seguire degli accorgimenti particolari.
Esplorando le proprietà di tale web part infatti, dopo un primo sguardo sembrerebbe che basta settare le proprietà "ListId" e "ViewId" per specificare la lista da cui recuperare dati e la modalità di visualizzazione.

E invece no!
Se settiamo solamente queste due proprietà, verrà visualizzata la vista di base da cui partono tutte viste di SharePoint. Quella con i campi "Titl"e, "Modified" e "Modified by" per intenderci.

Per fare in modo quindi da avere la vostra vista configurata correttamente all'interno della vostra web part di tipo XsltListViewWebPart è necessario ribassare l'XML della vista alla proprietà "XmlDefinition".
Ecco come:

XsltListViewWebPart webpart = new XsltListViewWebPart();
webpart.ListId = list.ID;            
SPView view = list.DefaultView;
webpart.ViewGuid = view.ID.ToString();

StringBuilder xml = new StringBuilder();
xml.Append("<View Name=\"" + view.ID.ToString("B").ToString().ToUpper(CultureInfo.InvariantCulture) + "\" MobileView=\"TRUE\" Type=\"HTML\" Hidden=\"TRUE\" DisplayName=\"\" Url=\"" + view.Url + "\" Level=\"255\" BaseViewID=\"1\" ContentTypeID=\"0x\" ImageUrl=\"/_layouts/images/generic.png\">");
xml.Append("<Query><OrderBy><FieldRef Name='FileLeafRef'/></OrderBy></Query>");
xml.Append("<ViewFields>");
for (int i = 0; i < view.ViewFields.Count; i++)
    xml.AppendFormat("<FieldRef Name=\"{0}\"/>", view.ViewFields[i]);
xml.Append("</ViewFields>");
xml.Append("<RowLimit Paged=\"TRUE\">10</RowLimit>");
xml.Append("<Toolbar Type=\"Standard\"/></View>");
xml.Append("<JSLink>clienttemplates.js</JSLink><XslLink Default=\"TRUE\">main.xsl</XslLink>");
webpart.XmlDefinition = xml.ToString();

limitedWebPartManager.AddWebPart(webpart);


L'effettivo inserimento all'interno della pagina viene fatto utilizzando il metodo AddWebPart della classe SPLimitedWebPartManager, che potete instanziare passando l'URL della web part page in cui volete inserire la web part. Trovate un esempio d'utilizzo di questa classe in questo post.
blog comments powered by Disqus