Abilitare i filtri nella toolbar delle Data Form Web Part con data source SQL Server

Personalmente penso che le Data Form Web Part siano lo strumento più potente che abbiamo a disposizione in SharePoint Designer, io ne sono un grande fan. In alcuni casi sembra però che ci siano delle limitazioni. Ad esempio in una data view (aka Data Form Web Part) con origine dati SQL Server sembra che sia possibile abilitare la toolbar unicamente con funzionalità di ordinamento e raggruppamento.

Sicuramente c’è una qualche motivazione valida dietro a questa scelta, fatto stà che nel merito di un progetto che ho seguito ultimamente avevo bisogno di questa funzionalità, era diventata una questione di vita o di morte (ehm… forse un tantino esagerato). Abbandonata la UI di SPD mi sono così concentrato sul codice XSL.

Come primo passo ho copiato da una Data View “classica” i template XSL relativi alla gestione della funzionalità di filtering (al secolo dvt_1.toolbar, dvt.filterfield, dvt.filteroption) e li ho inclusi nel mio stylesheet, così come i parametri che vengono dichiarati a livello “globale” quando si utilizza la toolbar di ordinamento, filtro e raggruppamento.

A questo punto a livello grafico ero già in grado di vedere le diverse drop down valorizzate con i dati corretti. Unico “piccolo” problema che modificando la selezione del campo non accadeva nulla, ad eccezione di un postback.

Il secondo passo è stato quindi quello di occuparmi della gestione del filtro. Per questo ho modificato la funzione javascript che viene chiamata al verificarsi dell’evento “onchange” sulla drop down. La mia scelta sul come operare è stata dettata dal tipo di soluzione adottata per la selezione dati, cioè un origine dati SQL che interroga una stored procedure. La stored procedure accetta tre parametri in ingresso: filtro “full text” (non consideratelo ora), campo da filtrare, valore da filtrare.

Via javascript, all’evento onchange, richiamo quindi la stessa pagina “aggiungendo” nel querystring i due paramentri relativi al filtro. Ottentere questi valori è semplice: il primo, cioè il nome del campo da filtrare è una variabile già presente nel template dvt.filterfield, mentre il secondo, cioè il valore, lo si può recuperare facilmente via javascript. Infine ho modificato il template dvt.filteroption per fare in modo che al refresh della pagina la drop down mostrasse il valore selezionato dall’utente.

– Riccardo



Lascia un commento

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione / Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione / Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione / Modifica )

Google+ photo

Stai commentando usando il tuo account Google+. Chiudi sessione / Modifica )

Connessione a %s...