Question

Dans ma situation, je crée des pages Web avec partie XsltListViewWebParts sur eux. Je dois définir une vue prédéfinie sur eux, avec filtrage personnalisé / colonnes configuration en CAML. Par conséquent, j'ai essayé de déplacer le XmlDefinition peu hors de la partie web, donc je peux faire référence à la définition correcte.

J'ai essayé également les éléments suivants:

  • Enregistrement du XsltListViewWebPart avec la configuration de vue correcte en tant que fichier .webpart, et l'ajouter à la galerie d'une partie web. Cela fonctionne très bien pour le site sur lequel la pièce a été créée, mais dès que je restaurer ailleurs; la définition est remis à zéro. Notez que quand je l'exportation; Je choisis l'option explicitement PAS utiliser la liste locale, mais un parent / Listes / Liste listname.

  • Quand j'ajoute le programme du webpart à la page, il est également possible (avec quelques hacks) pour obtenir la vue intégrée. Bien qu'il soit possible de configurer certaines choses ici (comme les colonnes affichées); ce n'est pas idéal. , Il semble aussi revenir toujours revenir pour voir BaseTypeId = « 0 » qui n'a pas la pagination. Je n'ai trouvé aucune option pour changer cette situation.

  • La vue par défaut montré (que je ne veux pas) semblait être la vue par défaut de la liste elle-même. J'ai donc essayé de changer avant d'ajouter que la webpart à la page, mais que rien ne change.

  • Enfin, il y a une option appelée XmlDefinitionLink. Cela promet de charger une vue personnalisée définition à partir d'un fichier XML. Puisque c'est à peu près ce que je dois, j'ai essayé aussi. Peu importe la façon dont je l'ai mis en place, il ne fonctionnera pas. Je ne reçois pas d'erreur, mais aucun résultat non plus. Il semble y avoir 0 ressources disponibles sur la façon d'obtenir ce travail, seul un article MSDN me disant que ce devrait être grande (ce qui est évidemment pas).

Si quelqu'un a réutilisé avec succès le XsltListViewWebPart avec une définition de vue personnalisée, s'il vous plaît partager vos connaissances. Cela ne me dérange pas d'écrire un tas de classes de code ou wrapper pour y arriver, aussi longtemps que je sais que je peux réellement y arriver. Il est repris beaucoup de temps jusqu'à présent, sans aucun résultat.

Était-ce utile?

La solution

Je préfère le faire dans le code dans un fournisseur d'approvisionnement personnalisé (SPWebProvisioningProvider). Le type de code suivant devrait faire l'affaire:

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("");

Autres conseils

Je travaille sur l'affichage Nuage de mots clés des catégories de messages dans un blog. Depuis contenu par webpart de requête ne supporte pas les champs LookupMulti, je XsltListViewWebPart. Voici les étapes:

  • ajouter une vue en « schema.xml » des postes avec un nouveau « BaseViewID »
  • set "XslLink" à une copie de "blog.xsl"
  • ajouter nécessaire "FieldRef" dans "ViewFields"
  • ajouter un modèle correspondant à la "BaseViewID"
  • ajouter le webpart lorsque provisionning la page

                                             Impossible d'importer ce composant WebPart.                             <> propriétés              True              Aucun              false                                   ]]>

Hope this helps.

Licencié sous: CC-BY-SA avec attribution
Non affilié à sharepoint.stackexchange
scroll top