Il control Calendar di ASP.NET

2 pagine in totale: <<Indietro 1 [2]

Gli eventi

Ciò che fa di questo control qualcosa di veramente interessante sono gli eventi che supporta. Oltre ai classici DataBinding, Load, Unload, Init e Pre_Render, utilissimi per cambiare al volo alcune proprietà, sono disponibili tre eventi propri del controllo:

  • DayRender , di tipo DayRenderEventHandler , utile per modificare in fase di rendering del singolo giorno (e quindi cella del control) una qualsiasi proprietà
  • VisibleMonthChanged di tipo MonthChangedEventHandler , che viene invocato quando si cambia mese di visualizzazione
  • SelectionChanged di tipo EventHandler , invocato quando selezioniamo un giorno qualsiasi del controllo e che ci permette, come vedremo, di recuperarne il valore

Un utilizzo pratico: date-pickup

Un controllo del genere in sè può trovare diversi utilizzi: estrarre eventi da un database partendo dalla data selezionata o essere utilizzato in fase di immessione per inserire date, utilizzando qualcosa che come praticità è nettamente superiore all'inserimento manuale.

Vediamo dunque come sfruttare al meglio il controllo, utilizzando all'interno di una popup che ci permetta di selezionare la data in maniera visuale e con un po' di Javascript (client-side) trasferire il valore appena ottenuto alla form contenuta sulla nostra pagina principale.

Per prima cosa dobbiamo inserire il link sulla pagina che andrà ad aprire la popup, tipicamente così composta:

<form name="frm">
<input size="13" type="text" name="data">
<a href="javascript:popdate('frm.data', '');">Seleziona data</a>

Come si nota, è stato aggiunto un comodo link dopo la form che invoca una funzione Javascript client-side, qui riportata:

<SCRIPT Language="JavaScript"><!--
function popdate(campo, valore) {
    CalWin = window.open('calendar.aspx?campo='+campo+'&data='+valore, 'calwindow','width=200,height=180,scrollbars=no,toolbar=no')
}
//--></SCRIPT>

Come si può notare passiamo al file calendar.aspx il nome della form e dell'input HTML a cui dovrà essere restituito il valore. Nulla ci vieta di rendere l'input stesso non modificabile da parte dell'utente.
A questo punto il nostro intervento si sposta sul file calendar.aspx, all'interno del quale inseriremo il codice necessario a creare il control Calendar, a cui assegneremo come nome "cal".
E' inoltre necessario aggiungere l'evento che andrà a gestire il cambio data: ci basterà inserire questo testo all'interno della dichiarazione del control:

onselectionchanged="ShowDate"

Ora è sufficiente inserire la routine lato-server che andrà ad intercettare l'evento di cambio di giorno selezionato, che non farà altro che creare al volo il codice Javascript client-side necessario per inviare alla pagina di partenza il valore selezionato:

<SCRIPT runat="server">

Sub ShowDate(sender As Object, e As EventArgs)
  Response.Write ("<SCRIPT language=""Javascript""><!--" & VbCrlf)

  Response.Write ("window.opener." & Request.Params("campo") & ".value='")
  Response.Write (cal.SelectedDate.ToString("dd/MM/yyyy") & "';" & VbCrLf)

  Response.Write ("self.close();" & VbCrLf)
  Response.Write ("--></SCRIP")
  Response.Write ("T>")
End Sub

</SCRIPT>

Come si può notare il codice da aggiungere non è complicatissimo e con pochissimi sforzi si può aggiungere questa funzionalità davvero utile.

Conclusioni

Calendar rappresenta uno dei controlli più semplici ma allo stesso tempo potenti che ASP.NET ci mette a disposizione.
E' programmabile praticamente in ogni suo aspetto e ci permette di utilizzarlo in ambiti in cui, con Classic ASP, avevamo bisogno di molto più codice.
Ancora una volta con ASP.NET possiamo scrivere meno codice ed avere allo stesso più funzionalità.

Approfondimenti

<% end if %>

2 pagine in totale: <<Indietro 1 [2]

Attenzione: Questo articolo contiene un allegato

Contenuti dell'articolo

Commenti
Dai un voto a questo articolo, ci aiuterà a migliorare il nostro sito (1 è il voto minimo, 5 il massimo).

Per procedere al rating dell'articolo devi essere autenticato.

Aggiungi un nuovo commento »»»
Per inserire un commento, devi registrarti alla nostra community.


TUTORIALS
TOP TEN ARTICOLI
NOTIFICHE

Iscriviti alla nostra newsletter nuoviarticoli per ricevere e-mail le notifiche!

Indirizzo e-mail:
PROVIDER ASP.NET 2.0

Seleziona il database per avere il web.config pronto per Membership, Roles e Profile API.



IN EVIDENZA
MISC