SharePoint 2010 - Semplice Cascading Lookup con SPServices
Ancora un post su quell'ottimo strumento che è SPServices, il framework jQuery/Ecmascript per SharePoint!
Uno scenario semplice: abbiamo due liste di anagrafiche, ad esempio, Nazioni e Aziende per Nazioni, e una lista che ha le due colonne Lookup, Nazione e Azienda.
Vogliamo poter utilizzare la prima Lookup, Nazione, per filtrare la seconda, Azienda, per le sole Aziende per il Paese selezionato.
Creiamo la lista Nazioni, con il solo campo Title.
Ora creiamo la lista Aziende con Title (Nome Azienda) e Nazione (lookup verso la lista Nazioni).
Ora, creiamo una lista CustomList1 che abbia le due colonne Nazione e Azienda, rispettivamente lookup di Nazioni e Aziende.
Modifichiamo i form NewForm.aspx e EditForm.aspx, inserendo il codice che segue, avendo cura di caricare in SiteAssets i file .js di cui abbiamo bisogno:
jquery.SPServices-0.7.2.min.js (download qui)
jquery-1.8.2.min.js (testato con questa versione)
Ecco il codice da inserire in entrambi i form (new e edit):
La seconda tendina rimane vuota, mentre se selezioniamo la Nazione:
Uno scenario semplice: abbiamo due liste di anagrafiche, ad esempio, Nazioni e Aziende per Nazioni, e una lista che ha le due colonne Lookup, Nazione e Azienda.
Vogliamo poter utilizzare la prima Lookup, Nazione, per filtrare la seconda, Azienda, per le sole Aziende per il Paese selezionato.
Creiamo la lista Nazioni, con il solo campo Title.
Ora creiamo la lista Aziende con Title (Nome Azienda) e Nazione (lookup verso la lista Nazioni).
Ora, creiamo una lista CustomList1 che abbia le due colonne Nazione e Azienda, rispettivamente lookup di Nazioni e Aziende.
Modifichiamo i form NewForm.aspx e EditForm.aspx, inserendo il codice che segue, avendo cura di caricare in SiteAssets i file .js di cui abbiamo bisogno:
jquery.SPServices-0.7.2.min.js (download qui)
jquery-1.8.2.min.js (testato con questa versione)
Ecco il codice da inserire in entrambi i form (new e edit):
<script type="text/javascript" src="../../SiteAssets/js/jquery-1.8.2.min.js"></script>
<script type="text/javascript" src="../../SiteAssets/js/jquery.SPServices-0.7.2.min.js"></script>
<script type="text/javascript">
$(document).ready(function() {
$().SPServices.SPCascadeDropdowns({
relationshipList: "Società", //Display Name della Lista della seconda Lookup
relationshipListParentColumn: "Nazione", //Static Name della colonna della Lista per la prima Lookup
relationshipListChildColumn: "Title", //Static Name della colonna della seconda Lookup (Nome Azienda)
//CAMLQuery: "<Eq><FieldRef Name='Status'/><Value Type='Text'>Active</Value></Eq>", //Eventuale query per filtrare i risultati sulla seconda Lookup
parentColumn: "Nazione", //Display Name della colonna come scritta nel form New o Edit di CustomList1
childColumn: "Azienda", //Display Name della colonna come scritta nel form New o Edit di CustomList1
simpleChild: true //modifica la visualizzazione della seconda Lookup in semplice dropdown
});
});
</script>
<script type="text/javascript" src="../../SiteAssets/js/jquery.SPServices-0.7.2.min.js"></script>
<script type="text/javascript">
$(document).ready(function() {
$().SPServices.SPCascadeDropdowns({
relationshipList: "Società", //Display Name della Lista della seconda Lookup
relationshipListParentColumn: "Nazione", //Static Name della colonna della Lista per la prima Lookup
relationshipListChildColumn: "Title", //Static Name della colonna della seconda Lookup (Nome Azienda)
//CAMLQuery: "<Eq><FieldRef Name='Status'/><Value Type='Text'>Active</Value></Eq>", //Eventuale query per filtrare i risultati sulla seconda Lookup
parentColumn: "Nazione", //Display Name della colonna come scritta nel form New o Edit di CustomList1
childColumn: "Azienda", //Display Name della colonna come scritta nel form New o Edit di CustomList1
simpleChild: true //modifica la visualizzazione della seconda Lookup in semplice dropdown
});
});
</script>
Quindi, aprendo un form, ad esempio, nuovo elemento:
Abbiamo il filtro sulle voci della seconda tendina:
Ovviamente, possiamo aggiungere altro codice per andare a mettere in cascata una terza lookup.
L'unica accortezza è che gli script portano il nome visualizzato nel form delle colonne: se si cambia questa etichetta o, banalmente, si utilizza un sito multilingua, bisogna andare a modificare gli script.
E' possibile richiamare tutto in un .js (magari nella master page) in modo da fare le modifiche solo una volta e non dover modificare entrambi i form.
Comments
Post a Comment