SharePoint 2010 Modal Dialog Options: dialogReturnValueCallback

[UPDATE]

Barbara mi ha fatto notare giustamente un paio di imprecisioni nel javascript.

  1. Nel blocco seguente le note non sono commentate correttamente.

if(dialogResult == SP.UI.DialogResult.OK){
\\ L’utente ha cliccato sul tasto Salva
} else{
\\ L’utente ha cliccato sul tasto Annulla o ha chiuso la finestra modale
}

dovrebbero essere così

if(dialogResult == SP.UI.DialogResult.OK){
// L’utente ha cliccato sul tasto Salva
} else{
// L’utente ha cliccato sul tasto Annulla o ha chiuso la finestra modale
}

  1. Nella riga options.url = formUrl; c’è un errore di sintassi. formUrl era stato infatti definito con l’iniziale maiuscola, quindi: options.url = FormUrl;

Una precisazione infine su dove posizionare lo script. Non è necessario inserirlo nell’head della pagina. Tuttavia personalmente preferisco non avere script isolati nelle pagine, ma concetrare il più possibile  funzioni e stili in file esterni.

[/UPDATE]

In un progetto che ho seguito nelle scorse settimane ho avuto la necessità di personalizzare il comportamento di apertura e chiusura delle finestre modali di visualizzazione/modifica di una lista SharePoint.

Il mio obiettivo era gestire, oltre a dimensioni e titolo della finestra, il comportamento alla sua chiusura, eseguendo azioni differenti a seconda dell’azione che ha portato alla chiusura stessa: submit o cancel.

Prima Barbara (ottimo il suo post) poi Claudio mi hanno guidato sulla strada giusta, come sempre!

Nelle opzioni di apertura della nuova finestra (var options = SP.UI.$create_DialogOptions();) è possibile definire una funzione javascript custom che verrà eseguita alla chiusura (options.dialogReturnValueCallback = nomedellafunzione;).

Le funzioni che vengono utilizzate in questo modo accettano due parametri (dialogResult e returnValue). Sfruttando il primo di questi due parametri possiamo andare a controllare in modo molto semplice (dialogResult == SP.UI.DialogResult.OK) se l’utente ha effettuata il salvataggio dell’item o se ha chiuso la finestra / annullato l’operazione.

Facciamo un esempio “pratico”.

<a href=”javascript:ApriFinestraModaleConOpzioni(‘../editform.aspx’)>Modifica elemento</a>

Questo è un semplice link ad una funzione js, niente di nuovo, vero?

<script type=”text/javascript”>

function ApriFinestraModaleConOpzioni(FormUrl){
var options = SP.UI.$create_DialogOptions();
options.url = formUrl;
options.title = ‘Il titolo della nuova finestra’;
options.dialogReturnValueCallback = FunzioneDiUscita;
SP.UI.ModalDialog.showModalDialog(options);
}

// In questa prima funzione vengono istanziate le opzioni della nostra finestra modale. SP.UI.$create_DialogOption(); è l’oggetto che permette il “miracolo”;

function FunzioneDiUscita(dialogResult, returnValue){
if(dialogResult == SP.UI.DialogResult.OK){
\\ L’utente ha cliccato sul tasto Salva
} else{
\\ L’utente ha cliccato sul tasto Annulla o ha chiuso la finestra modale
}
}

// La seconda funzione non fa proprio nulla, è solo un esempio🙂

</script>

A questo indirizzo trovate un approfondimento su tutte le opzioni disponibili nell’oggetto SP.UI.ModalDialog.showModalDialog,

http://msdn.microsoft.com/en-us/library/ff410058.aspx

mentre in questo trovate i possibili valori del parametro dialogResult

http://msdn.microsoft.com/en-us/library/ff409060.aspx

e ovviamente, ancora una volta, il post di Barbara

http://nonsolosharepoint.wordpress.com/2011/02/09/finestre-di-dialogo-sharepoint-2010/

Semplice e potentissimo, non trovate?

-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...