XsltListViewWebPart oublier web en cours lorsque le rendu sur les Mises en page
-
09-12-2019 - |
Question
Je vais ajouter une très simple XsltListViewWebPart pour une page d'application.Comme suit:
XsltListViewWebPart lvWebPart = new XsltListViewWebPart { ChromeType = PartChromeType.None, ListUrl = "/somesite/list" };
Page.Controls.Add(lvWebPart);
Tout fonctionne très bien (je peux télécharger des fichiers, créer des dossiers, de choisir différents points de vue, etc.) - mais les liens de dossiers ont le tort href:ils ont toujours pointer vers la racine web!
Voir les exemples suivants:
Comme vous pouvez le voir, le document correctement liens vers ../sites/sr/doclib/mydocument.docx cependant lorsque l'on regarde les dossiers, ils oublient le contexte dans lequel elles sont actuellement (ils sont dans http://../sites/sr/_layouts/../../..Detail.aspx?RootFolder=...
, le plus important de la partie en cours /sites/sr/).Ils essaient d'aller à l'_layouts dossier sur le site racine de la collection de contexte -comme indiqué ci-dessus: http://../_layouts/../../..Detail.aspx?RootFolder=...
Ou encore résumées:
- La page de l'application de l'emplacement:
http://sp/sites/sr/_layouts/my/application/Detail.aspx
- De la liste/doclib je suis accès à
http://sp/sites/sr/mylist
- L'URL pour les dossiers à l'intérieur de XsltListViewWebPart
http://sp/_layouts/my/application/Detail.aspx?RootFolder=...
- L'URL pour les dossiers qu'ils devraient l'être
http://sp/sites/sr/_layouts/my/application/Detail.aspx?RootFolder=...
Voici le kicker:Lors de l'utilisation d'un ListViewWebPart, tout fonctionne comme il se doit!Ainsi, au lieu de la XsltListViewWebPart ci-dessus, je n'en utiliser qu'un ListViewWebpart - et des dossiers de travail, le contexte est pris en compte dans les dossiers de l'URL comme je veux (http://../sites/sr/_layouts/../../..Detail.aspx?RootFolder=...
J'ai essayé de réglage de la WebId Bien sur la XsltListViewWebpart en espérant qu'il y aurait à établir le contexte, mais pas de chance.Je suis en train de penser que, soit que je le configure à tort ou à l'SharePoint 2010 XsltListViewWebPart a un bug que le même code fonctionne pour un ListViewWebPart sur la même page de l'Application.
J'espère que quelqu'un peut vérifier cette question.
La solution
En bref, n'utilisez tout simplement pas xsltlistWebPart sur les pages d'application.
Et voici quelques explications résumées:
XSLTLISTVIEWWEBPART ET AUTRES OOTB SharePoint WebParts (surtout complexes), apparemment, ne sont apparemment pas censés travailler dans l'environnement des pages d'application. En d'autres termes, ils n'étaient pas testés là-bas et leur opérabilité n'est donc pas garantie.
Ceci peut être confirmé indirectement en lisant au moins les articles MSDN suivants:
- Création de pages d'application pour SharePoint
- Types de page SharePoint
.. Une page de site peut également organiser des fonctionnalités telles que des pièces Web dynamiques et Zones de la partie Web. Les pages d'application ne peuvent pas faire ces choses.
Aussi, il est indiqué dans le cours MS 10232 .
Tentative d'utiliser un objet qui a cessé d'exister.
En outre, vous pouvez consulter la question suivante pour un autre exemple de problèmes avec OOTB WebPart sur la page d'application (ListViewWebPart, cette fois):
Autres conseils
Premièrement, je pense que Andrey a frappé le clou sur la tête. De plus, vous pouvez essayer d'utiliser le ListviewByQuery Control sur une page d'application Si vous recherchez une simple mise en page de données tabulaire (c'est-à-dire une liste). Microsoft le fait-il dans la page d'état de Workflow OOB (I.E. _Layouts / WRKSTAT.ASTAT.ASPX) pour l'affichage des tâches.