Posts
163
Comments
179
Trackbacks
5
Ajax ControlToolkit: evitare il postback sul bottone del CalendarExtender

Il CalendarExtender è sicuramente un bel controllo. Nel senso che l'idea di base è buona, forse un po' meno l'implementazione attuale. Ci sono infatti una serie di problemi che ne rendono l'utilizzo quantomeno fastidioso.

Dei problemi di memoria ne avevo parlato in un mio precedente post. Se scaricate il codice sorgente dell'ultimo check-in dovrebbero essere risolti o almeno nelle mie applicazioni non si presentano più.
Ci sono però altri problemi. In particolare quando si utilizza un bottone per far aprire il nostro calendario ci sono subito due cose che saltano all'occhio:

  1. Clikkando sul bottone il popup del calendario viene visualizzato. Se si clikka in un qualsiasi punto dello schermo il calendario non viene nascosto in automatico, ma occorre necessariamente clikkare nuovamente sul bottone per nascondere il calendario.
    Questo è un comportamento anomalo per gli utenti, dato che solitamente gli altri calendari che si trovano in giro, non hanno questo comportamento. Non a caso questa modifica è uno dei work item più votati sul sito di CodePlex.
  2. Quando si clikka sul bottone per visualizzare il calendario viene effettuato un postback della pagina.

Il secondo problema salta fuori quando si utilizza un ImageButton e può risultare fastidioso, prima di tutto per il postback in se e in secondo luogo perchè se si hanno dei validator questi "scattano". Risolvere quest'ultimo problema è banale, basta settare la proprietà CauseValidation dell'ImageButton a False.
Rimane però il postback che, personalmente, trovo inutile. Per risolvere anche questo problema e in attesa che sia fissato ufficialmente, è possibile usare questo workaround:

1 2 <asp:TextBox ID="txtCalendar" runat="server">asp:TextBox> 3 4 <a id="btnCalendar"><img src="images/calendar.png" />a> 5 6 <ajax:CalendarExtender ID="CalendarExtender1" 7 TargetControlID="txtCalendar" 8 PopupButtonID="btnCalendar" 9 runat="server"> 10 ajax:CalendarExtender>

Sostanzialmente l'ImageButton viene sostituito da un anchor e da un'immagine. In questo modo il postback iniziale non avviene più e l'apertura del calendario risulta molto più veloce.

posted on mercoledì 1 agosto 2007 12:08 Print
Comments
Gravatar
# re: Ajax ControlToolkit: evitare il postback sul bottone del CalendarExtender
Alessandro Sorcinelli
01/08/2007 15:01
Vero!
Anche più semplice. Grazie della info.
Gravatar
# re: Ajax ControlToolkit: evitare il postback sul bottone del CalendarExtender
lucab
01/08/2007 15:19
Io avevo risolto con:
OnClientClick='""'
(qui ad esempio http://www.webis.it/extras/CodiceFiscale.aspx)
Gravatar
# re: Ajax ControlToolkit: evitare il postback sul bottone del CalendarExtender
michele
01/08/2007 17:11
ho impostato UIculture e culture a IT e globalization e localization sono a true...il problema persiste!
Gravatar
# re: Ajax ControlToolkit: evitare il postback sul bottone del CalendarExtender
michele
01/08/2007 19:12
RISOLTO!

scusa ma sono ancora un novizio di ajax! è il mask edit che ho in cocomitanza sulla stessa textbox a creare il problema, ma basta impostare la proprietà CULTURE NAME a una culture che tiene la data nel formato dd/mm/yyyy e non si hanno problemi!
Comments have been closed on this topic.
News
Se volete sapere con chi avete a che fare eccomi qui in uno "scatto" lavorativo.

La mia foto

Logo MCAD
Logo MCTS