Logo UGIdotNET

Impostare il focus di un LinkButton

Scenario: un normalissimo form di inserimento, con il suo bravo linkbutton in fondo. Ovviamente usiamo il linkbutton perchè, per il layout della nostra applicazione web, un bottone probabilmente stonerebbe.

Il nostro utente si aspetta che venga fatto il submit del form quando preme ENTER, ma quello che succede invece è che il form viene riprocessato dal server e non succede assolutamente niente.
Perchè?

Semplicemente perchè il focus, per default, appartiene al primo pulsante di tipo submit presente nella pagina.
L'output di un linkButton peró non è un <input type="submit"> ma un <a href="">, al quale viene appeso un richiamo alla funzione Javascript (__doPostBack) allo scatenarsi dell'evento onClick, che è poi la funzione inserita dal framework e che si occupa di fare il submit del form.

Per ovviare a questo problema, è possibile usare il metodo RegisterHiddenField della classe Page nel page_load del vostro form.
Ipotizzando che il vostro pulsante si chiami "lnkInvia", è possibile usare il seguente codice:

    Page.RegisterHiddenField("__EVENTTARGET", "lnkInvia")

In questo modo verrà creato un campo hidden che dirà al browser di rivolgersi al tasto lnkInvia una volta che verrà premuto invio.

Autore: Alessandro Ghizzardi
Data: 27 novembre 2003
Ultimo aggiornamento: 23 luglio 2004
Categorie: 

© 2001 User Group Italiano UGIdotNET. Tutti i diritti riservati. Note legali. - Partita IVA 01927050185