ASP.NET - Exibindo feriados com ASP.NET


A utilização do objeto Calendar já foi abordada em dois artigos:

  1. ASP.NET - Usando o objeto Calendar.
  2. ASP.NET - Usando calendar para entra de dados em WEeb Forms.

Neste artigo irei mostrar como você pode destacar no calendários dias especiais como feriados , aniversários e outros lembretes. Neste artigo não irei mostrar uma forma automatizada de fazer isto . Por questão de simplicidade irei apenas mostrar como você pode atribuir no seu código os textos vinculados ao dia e exibir o resultado no calendário.

Abaixo temos o resultado que poderá ser obtido ao ser executado o código do arquivo Feriados.aspx.

Para vê-lo funcionando clique aqui -> Feriados.aspx

Para implementar o código do exemplo vou usar o WebMatrix. Abra o Web Matrix e clique no Menu File | New. Você verá a tela a seguir. Agora selecione as opções conforme abaixo:

Na guia Design inclua o objeto Calendar conforme figura abaixo:

Na guia HTML já podemos ver o código gerado pelo Web Matrix conforme abaixo:

Dim Feriados(12,31) As String
Na guia Code iremos defnir um array com duas dimensões contendo o número máximo de meses e o número máximo de dias.

No evento Page_Load iremos atribuir alguns textos relacionando-os com os dias dos feriados ou dias especiais. Assim ao fazer :
feriados(9,8) = "Aniversário" estou atribuindo o texto Aniversário ao dia 8 do mês 9.

A rotina Chama_dia esta vinculada ao evento OnDayRender do calendário de forma que quando houver mudança no mês ou ano os dias sejam atualizados.

Para encerrar o código completo do arquivo Feriados.aspx

<%@ Page Language="vb" %>
<script runat="server">

'definindo um array com o número máximo de dias e número máximo de dias
Dim feriados(12, 31) As String

'
atribui os feriados ao array
Sub Page_Load(Source as Object, E as EventArgs)
   feriados(9, 8) = "Aniversário"
   feriados(9, 23) = "Aniversário - Esposa"
   feriados(1,1) = "Ano Novo"
   feriados(9,7)="Dia da Independência"
   feriados(12,25)="Natal"
   feriados(011,02)="Finados"
End Sub

Sub Chama_Dia(sender As Object, e As DayRenderEventArgs)
   If e.Day.IsOtherMonth Then
       e.Cell.Controls.Clear()
   Else
       Dim aData As Date = e.Day.Date
       Dim aFeriado As String = feriados(aData.Month, aData.Day)
       If (Not aFeriado Is Nothing) Then
          Dim aLabel As Label = New Label()
          aLabel.Font.Name = "Verdana"
          aLabel.Font.Size = FontUnit.Point(10)
          aLabel.Text = "<br>" & aFeriado
          e.Cell.Controls.Add(aLabel)
        End If
    End If
End Sub

</script>
<html>
<head>
<title>Feriados no ASP.Net</title>
</head>
<body>
<form id="form1" runat="server">
<p>
Exibindo Feridados com ASP.NET
</p>
<p>
<asp:Calendar id="cal1" runat="server" DayHeaderStyle-BackColor="LightGray" DayHeaderStyle-Font-Bold="True"    TodayDayStyle-Font-Size="12pt"_
   TodayDayStyle-Font-Italic="True" TodayDayStyle-Font-Bold="True" _
   OtherMonthDayStyle-ForeColor="blue" TitleStyle-Height="36px" _
   TitleStyle-Font-Bold="True" TitleStyle-BackColor="#DEFFFF" _
   SelectedDayStyle-forecolor="Blue" SelectedDayStyle-Backcolor="#DEFFFF" _
   OnDayRender="Chama_Dia" ShowGridLines="true" Width="75%" Borderwidth="1" _
   Forecolor="Black" Backcolor="aqua" _="_"></asp:Calendar>
</p>
<p>
Quer saber mais sobre ASP.NET ?&nbsp; visite : _
<a href="http://www.macoratti.net">www.macoratti.net</a>
</p>
</form>
</body>
</html>

Aguarde em breve mais artigos sobre o objeto Calendar.


José Carlos Macoratti