In passato mi sono già occupato del control Calendar. La verità è che si tratta di un oggetto molto flessibile e comodo per le più svariate esigenze.
E' utile per selezionare date, ma anche per mostrare eventualmente dati estratti da un database.
L'esempio di oggi rientra nell'ultima tipologia ed anche se alla fine mostra solo dei link in base al valore contenuto in un Array (precedentemente popolato ad esempio a partire da un database), può semplicemente essere riciclato per fini differenti, ad esempio per mostrare le presenze di un dipendente in un mese.
Il codice si basa dunque su un Array bidimensionale, composta dalla prima colonna che indica il mese e dalla seconda che indica il giorno.
Alla fine è sufficiente intercettare l'evento DayRender del Calendar (che si verifica ogni volta che un giorno è creato) e scrivere all'interno della cella quello che ci pare.
<SCRIPT runat="SERVER" language="C#"> private string[,] myContent = new string[13, 32]; private void Page_Load(object sender, System.EventArgs e) { // estrazione dati da db // creiamo alcuni inserimenti a caso myContent[DateTime.Today.Month, DateTime.Today.Day] = "https://www.aspitalia.com/"; myContent[12, 12] = "http://whideyday.aspitalia.com/"; myContent[DateTime.Today.Month, 28] = "http://forum.aspitalia.com/"; } protected void cal_DayRender(object sender,DayRenderEventArgs e) { // disattivo la selezione di tutti i giorni e.Day.IsSelectable = false; // verifico che nell'Array ci sia qualcosa string Cont = null; DateTime dt = DateTime.Parse(e.Day.Date.ToString()); Cont = myContent[Convert.ToInt32(dt.Month.ToString()), Convert.ToInt32(dt.Day.ToString())]; if (Cont!= null) { // rimuovo tutti i controls esistenti for (int j = 0; j<=e.Cell.Controls.Count; j++) { e.Cell.Controls.RemoveAt(j); } // cambio colore di sfondo e.Cell.BackColor = System.Drawing.Color.Red; // creo una nuova label e l'aggiungo alla cella Label lblContent = new Label(); lblContent.Text = "<a href=\"" + Cont + "\">" + e.Day.DayNumberText + "</a>"; e.Cell.Controls.Add (lblContent); } } </SCRIPT> <form runat="server"> <asp:calendar id="cal" runat="server" onDayRender="cal_DayRender" enableviestate="false"/> </form>
Il risultato è visibile ad esempio all'interno dei Blogs di ASPItalia.com:
http://blogs.aspitalia.com/
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
I più letti di oggi
- Riordinare le righe di una GridView di ASP.NET con jQuery
- Creazione di un alarm con suono personalizzato con Windows Phone 7.1
- Utilizzare la session affinity con Azure Container Apps
- Blue-green deployment con Azure Web App e DevOps
- Ed infine anche il calendario :)
- Configurare la diagnostica di Azure attraverso Visual Studio
- Recuperare la data di creazione di un tag tramite una pipeline YAML di Azure DevOps
- Microsoft Security Bulletin MS05-002
- .NET Core e dispositivi IoT
- Eseguire attività pianificate con Azure Container Jobs