……Marco Valli's Blog……

Internet, Tecnologia e SharePoint!!!

Creare un titolo dalle colonne filtrate in SharePoint


Qualche giorno fa ho avuto un’esigenza un po’ particolare, dopo aver creato un sito con parecchie liste con centinaia di elementi, ho cominciato a creare delle viste per semplificare la ricerca agli utenti… Vista con ricerca per questo campo piuttosto che per quello… ho inoltre aggiunto dei collegamenti nei menù per filtrare direttamente per un valore specifico nella lista, aggiungendo nell’url la querystring usata nei filtri di SharePoint:

http://nomesito/nomelista/nomevista.aspx?FilterField1=NomeCampo&FilterValue1=ValoreCampo

In questo modo molto semplice l’utente fa click sul link nel menù e arriva tranquillo tranquillo sulla pagina già correttamente filtrata…

Con questo metodo, una sola vista è sufficiente per soddisfare numerosi tipi di filtro ma ha un piccolo problema che, più che tecnico, è di concetto, infatti nella vista che si ottiene, l’unico indicatore del filtro è dato dall’icona a forma di imbuto sulla colonna a cui si è applicato il filtro o neanche quello ne caso in cui si sia creato a mano l’url per il filtro ma la colonna sia stata nascosta nella vista di destinazione…

In poche parole l’utente fa click sul menù, si trova la pagina già bella e filtrata ma… Dopo qualche secondo sicuramente si sarà già dimenticato il tipo di filtro che ha scelto… Come fare per recuperare il filtro applicato? Niente di meglio che utilizzare un bel javascript in combinazione con la fantastica Content Editor Web Part (CEWP) per ottenere un sottotitolo dinamico per la nostra bella paginetta:

  1. entrare in modifica della pagina della lista di sharepoint e aggiungere una web part editor del contenutoimage
  2. Una volta inserita la webpart, modificarla e fare click sul pulsante Editor origine HTML e inserire questo codice:image

    <script type=”text/javascript”>

    function gup(name)
    {
    name = name.replace(/[[]/,”\[“).replace(/[]]/,”\]”);
    var regexS = “[\?&]”+name+”=([^&#]*)”;
    var regex = new RegExp( regexS );
    var results = regex.exec( window.location.href );
    if( results == null )
    return “”;
    else
    return results[1];
    }

    var parametro = gup( ‘FilterField1’ );

    var valore = gup( ‘FilterValue1’ );

    if (valore!=””)
    {
    document.write(“<span class=ms-pagetitle>Provincia con “+parametro+” = “+valore+”</span>”);
    }
    else
    {
    document.write(“<span class=’ms-pagetitle>Nessun filtro impostato</span>”);
    }
    </script>

  3. Salvare le modifiche e uscire dalla modalità di modifica della pagina
  4. Filtrare un qualsiasi campo della lista e notare come nell’area in cui abbiamo messo la CEWP comparirà un titolo con il filtro che abbiamo impostato:

image

image

Lo script è molto semplice e in sostanza recupera il valore dalle due querystring e lo mostra direttamente all’interno della webpart… l’unico limite che ho attualmente trovato è dovuto all’encoding del parametro/valore che può mostrare dei caratteri strani in caso siano presenti accenti o simboli ma basterebbe inserire una correzione specifica per i caratteri “problematici” per risolvere anche questo problema…

Come si può vedere dallo script, il testo visualizzabile (evidenziato in rosso) prima dei parametri è facilmente modificabile e, modificando la classe dello “span” (evidenziata in blu) si può personalizzare l’aspetto della scritta, in questo caso ho utilizzato l’ms-pagetitle, la stessa classe del titolo della lista (Province Italiane in questo caso)..

In definitiva, un altro caso che dimostra la versatilità della CEPW, forse la più utile webpart di SharePoint…

Enjoy!! Sorriso

Lascia un commento