Tag

, ,

In questo post tornerò a parlare (scrivere!!!) della mitica DataView/DataFormWebPart.

Immaginiamo di avere un sito (site collection) organizzato a più livelli (sottositi) e, allo stesso, di avere l’esigenza di mostrare il contenuto di un sottosito in un altro sottosito.

La ListViewWebPart non ci è di alcun aiuto (non “esce” dai confini del sito); la Content Query WebPart potrebbe, ma cosa succede se non abbiamo Moss o SharePoint Server? E se volessimo qualcosa di più rispetto alle sue funzionalità?

Ecco appunto che potrebbe fare al caso nostro la DataView (Visualizzazione dati), andando a scegliere di utilizzare come origine dati la connessione ad una libreria esterna.

Di seguito vediamo come fare, ma prima una premessa: lavoro con una versione di SharePoint Designer in inglese e anche quando descrivo le procedure tendo ad usare indiscriminatamente le 2 lingue, scusate:

  • DataView (Visualizzazione dati)
  • Data Source (Origine dati)
  • Library (Libreria)
  • Content Query WebPart (WebPart Query Contenuto)

Ma passiamo al come fare con SharePoint 2007 (Moss o Wss che sia) e SharePoint Designer 2007:

Passaggio 1 – Inserire la DataView:

image

Dal menu DataView, scegliamo Inserisci DataView.

 

Passagio 2 – Scegliere la sorgente dati:

image

Il passaggio 1 ci consente di inserire sulla pagina il codice della DataView e di visualizzare tutte le sorgenti dati disponibili; quella che fa al caso nostro è: “Connect to another library”.

 

Passaggio 3 – Scegliere il sottosito:

image

La selezione del link “Connect to another library”, ci consente di aprire la finestra “Manage library”, dalla quale possiamo specificare a quale contenuto SharePoint (diverso dal sito corrente) vogliamo agganciarci.

 

Passaggio 4 – Scelta del sottosito:

image

Qui diamo un nome e un luogo (percorso del sito dal quale vogliamo leggere) alla nostra origine dati. Nell’esempio specifico, userò come nome “Post NonSoloSharePoint” e come Location “http://intranet/KM” (laddove KM è un sottosito della sitecollection Intranet).

 

Passaggio 5 – Scelta della lista dal sottosito:

image

Et voilà, magnificamente tutto il contenuto del sottosito KM (inteso come liste e raccolte) viene mostrato ed è utilizzabile come sorgente, esattamente allo stesso modo di come si farebbe per una dataview ordinaria.

 

Passaggio 6 – Scelta dell’origine dati:

image

Come si crea la DataView? Selezioniamo la lista che vogliamo leggere e dal menu contestuale scegliamo “Mostra i dati”.

 

Passaggio 7 – Scelta dei campi da inserire in DataView:

 image

A questo punto non ci resta che selezionare i campi che vogliamo inserire (CTRL + Click per la selezione multipla) per poi scegliere dal pulsante “Inserisci i campi selezionati come…” se vogliamo inserire il tutto come Visualizzazione di un singolo elemento piuttosto che Visualizzazione di più elementi.

 

Passaggio 8 – Il risultato:

image

Questo è quanto, non resta che sbizzarrirci con la formattazione e via!

 

E CON IL 2010?

La cattiva notizia è che via interfaccia di SharePoint Designer la funzionalità “Connect to another library” non esiste più😦

La buona notizia è che, nonostante non esista più il comando, la funzionalità è ancora supportata, basta solo lavorare via codice oppure ingannare SharePoint Designer🙂

Vediamo la prima delle 2 soluzioni, ovvero lavorare via codice.

Cosa succedeva nel 2007?

  • Nella sezione “parameterbinding”, veniva creato un parametro WebUrl con i riferimenti al sottosito:

image

    • nel tag <DataSources>, all’interno di ciascun nodo (SelectParameters,  DeleteParameters, UpdateParameters, InsertParameters), assieme al ListID, veniva passato il parametro WebUrl:

<WebPartPages:DataFormParameter
Name="WebURL"
ParameterKey="WebURL"
PropertyName="ParameterValues"
DefaultValue="/KM/"/>

image

Nel 2010 dobbiamo fare esattamente la stessa cosa più una, ovvero:

  • Esattamente la stessa cosa:
    • aggiungere il parametro WebUrl nel parameterbinding:
      <ParameterBinding Name="WebURL" Location="None" DefaultValue="/KM/"/> )
    • aggiungere il dataformparameter WebUrl nei diversi nodi del DataSources
  • Più una:
    • aggiungere nel tag <WebPartPages:DataFormWebPart …> la proprietà nuova del 2010 listname settata a null, ovvero:

<WebPartPages:DataFormWebPart listname=""…>

 

image

 

Con questo piccolo accorgimento, la nostra dataview cross site funzionerà anche nel 2010, sia che la si sia creata ex novo sia che il nostro “sito” sia migrato dal 2007.

Mi sembra tutto,

hope is usefull,

ciao,

Baxy

P.S. se siete interessati a cosa intendo per ingannare SharePoint Designer, basta chiedere🙂.