Domanda

Aggiungo una cosa molto semplice XsltListViewWebPart a una pagina dell'applicazione.Così:

XsltListViewWebPart lvWebPart = new XsltListViewWebPart { ChromeType = PartChromeType.None, ListUrl = "/somesite/list" };
Page.Controls.Add(lvWebPart);

Tutto funziona bene (posso scaricare file, creare cartelle, scegliere visualizzazioni diverse, ecc.), ma i collegamenti alle cartelle hanno l'href sbagliato:puntano sempre alla rete principale!

Vedi questi esempi:enter image description here

Come puoi vedere, il documento si collega correttamente a ../sites/sr/doclib/mydocument.docx tuttavia quando guardano le cartelle dimenticano il contesto in cui si trovano attualmente (sono in http://../sites/sr/_layouts/../../..Detail.aspx?RootFolder=..., la parte importante è /sites/sr/).Tentano di accedere alla cartella _layouts nel contesto della raccolta siti radice, come mostrato sopra: http://../_layouts/../../..Detail.aspx?RootFolder=...

O ancora riassunto:

  • Posizione della pagina dell'applicazione:
    • http://sp/sites/sr/_layouts/my/application/Detail.aspx
  • L'elenco/doclib a cui sto accedendo
    • http://sp/sites/sr/mylist
  • L'URL delle cartelle all'interno di XsltListViewWebPart
    • http://sp/_layouts/my/application/Detail.aspx?RootFolder=...
  • L'URL delle cartelle come dovrebbero essere
    • http://sp/sites/sr/_layouts/my/application/Detail.aspx?RootFolder=...

Ecco il kicker:Quando si utilizza a ListViewWebPart, tutto funziona come dovrebbe!Quindi, invece di XsltListViewWebPart sopra, utilizzo semplicemente un ListViewWebpart e le cartelle funzionano, il contesto viene preso in considerazione e le cartelle hanno l'URL come voglio (http://../sites/sr/_layouts/../../..Detail.aspx?RootFolder=...

Ho provato a impostare il ID Web Proprietà su XsltListViewWebpart sperando che impostasse il contesto, ma senza fortuna.Ora penso che o lo configuro in modo errato o che il nuovo XsltListViewWebPart di SharePoint 2010 contenga un bug, poiché lo stesso codice funziona per un ListViewWebPart nella stessa pagina dell'applicazione.

Spero che qualcuno possa verificare questo problema.

È stato utile?

Soluzione

In breve, semplicemente non utilizzare XsltListWebPart nelle pagine delle applicazioni.

Ed ecco alcune spiegazioni riassuntive:

XsltListViewWebPart e altre web part OOTB di SharePoint (soprattutto quelle complesse), apparentemente non dovrebbero funzionare nell'ambiente delle pagine delle applicazioni.In altre parole, non sono stati testati lì e quindi la loro funzionalità non è garantita.

Ciò può essere confermato indirettamente leggendo almeno i seguenti articoli MSDN:

..Una pagina del sito può anche ospitare funzionalità come Web Dynamic Web e zone di web part.Le pagine dell'applicazione non possono eseguire queste operazioni.

Inoltre è indicato nel corso MS 10232.

Per quanto riguarda XsltListViewWebPart (XLV) in particolare, ho sentito parlare di diversi problemi durante l'utilizzo dalla pagina dell'applicazione e ne ho riscontrati personalmente alcuni.

Ad esempio, se personalizzi XLV utilizzando la proprietà XslLink, XLV non riuscirà a memorizzare nella cache il file xsl e, di conseguenza, ECB e i pulsanti corrispondenti sulla barra multifunzione non funzioneranno.Nei log, riceverai il seguente messaggio di eccezione:

Tentativo di utilizzare un oggetto che ha cessato di esistere.

Inoltre, puoi controllare la seguente domanda per un altro esempio di problemi con la webpart OOTB nella pagina dell'applicazione (ListViewWebPart, questa volta):

Altri suggerimenti

Innanzitutto, penso che Andrey abbia centrato il punto.Inoltre, potresti provare a utilizzare il file Controllo ListViewByQuery su una pagina dell'applicazione se stai cercando un semplice layout tabellare di dati (ad es.una lista).Microsoft lo fa nella pagina di stato del flusso di lavoro OOB (ad es._layouts/wrkstat.aspx) per la visualizzazione delle attività.

Non l'ho provato con i menu della BCE e simili, ma l'ho usato per elenchi di dati di sola lettura.Dal momento che sembra che tu lo stia utilizzando per una raccolta documenti con cartelle, non sono sicuro che funzioni correttamente senza molto codice per far funzionare correttamente cartelle, ordinamento e impaginazione.Potrebbe valere la pena provarci, anche se non ci spenderei molto tempo poiché la pagina del sito è probabilmente un modo migliore per procedere con meno codice personalizzato.

Se utilizzi ListViewByQuery, assicurati di rivedere questi collegamenti per il paging, ecc.:

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