Friday, January 10, 2014

SharePoint - Aggiungere un bottone Applica al form di Edit di un List Item per salvare senza chiudere il form

Questo articolo descrive come creare un bottone "Applica" in un edit form per un list item, in modo da salvare i dati e ricaricare il form stesso, senza essere reindirizzati alla lista (o al Source indicato nel querystring).

Creare un edit form personalizzato con SharePoint Designer.
Aprire in modifica il form.

Creare un nuovo parametro di tipo QueryString per il Source, chiamiamolo Source: quando la pagine viene ricaricata dopo aver salvato i dati, l'url nel Source viene mantenuto (ad es, per essere reindirizzati correttamente quando si clicca su Salva o Annulla).

Quindi, cercare nel codice i tag seguenti:

<xsl:param name="dvt_apos">&apos;</xsl:param>
<xsl:variable name="dvt_1_automode">0</xsl:variable>

E aggiungere sotto il codice seguente:

<xsl:param name="ListItemId">0</xsl:param>
<xsl:param name="Source"></xsl:param>

Cercare il bottone Salva (o Annulla) nell'xslt:

<SharePoint:SaveButton runat="server" ControlMode="Edit" id="savebutton2"/>

Aggiungere il codice seguente (il bottone):

<input type="button" value="Applica" name="btnSave" onclick="javascript: {ddwrt:GenFireServerEvent(concat('__commit;__redirect={ModificaPratica.aspx?ID=',$ListItemId,'&amp;Source=',$Source,'}'))}" />

Nel codice inserito, notare la funzione GeFireServerEvent: questa esegue il salvataggio e reindirizza all'URL indicato.
L'URL concatena l'ID con il parametro ListItemId e il Source con il corrispondente parametro.

Il risultato: quando clicchi su Applica, l'item viene salvato e la pagina ricaricata (con la stessa Source in querystring), invece che essere reindirizzati al Source.

Tips: puoi aggiungere una Custom Action al list item (con SPDesigner), chiamando una function JS che eseguirà il click sul bottone Applica (button con name="btnSave").

$("input[name='btnSave']").click();

Così, hai un bottone nel ribbon per Appica (salva e reload form), Salva (salva e chiude, con redirect al source), Annulla (chiude e redirect al source)