|
Nous avions abordé lors d'un précédent
article l'utilisation d'un des nombreux contrôles Web
de .NET, avec "ASP.NET
: utiliser le contrôle DropDownList". Nous allons
voir ici un contrôle standard autrement
plus complet (et compliqué) du Framework : Calendar.
Comme son nom l'indique, celui-ci nous permet de créer
en une seule ligne un gestionnaire de calendrier visuellement
complet. Le tout est alors d'en maîtriser le fonctionnement,
et ensuite l'aspect visuel...
Ce composant est l'un des deux composants standards dits "riches",
l'autre étant "AdRotator", qui permet d'afficher
aléatoirement des bannières publicitaires définies
dans un fichier XML. Tout intéressant qu'il puisse
être, nous ne l'aborderons pas.
Comme nous venons de l'écrire, le composant serveur
Calendar est des plus surprenants car une seule ligne permet
d'en afficher la principale partie :
<html>
<body>
<form runat="server">
<asp:Calendar id="Calendar1"
runat="server"></asp:Calendar>
</form>
</body>
</html>
...permet déjà d'afficher un calendrier totalement
fonctionnel :

...mais
pas pour autant utile : il permet tout au plus de circuler
d'un mois à l'autre.
On peut déjà le mettre au goût
du jour en accédant à ses méthodes lords
de son appel :
<form
runat="server">
<asp:Calendar id="Calendar1" runat="server"
BorderStyle="Double" BorderWidth="3px" DayNameFormat="FirstTwoLetters"
FirstDayOfWeek="Monday" ShowGridLines="True" CellPadding="0"
SelectedDate="2004-05-03">
<OtherMonthDayStyle ForeColor="LightGray">
</OtherMonthDayStyle>
</asp:Calendar>
</form>
Pour "l'activer", on utilise un langage
.NET (ici, C#) pour accéder à ses nombreuses
méthodes et propriétés. Par exemple,
la propriété SelectedDate
renvoi la date cliquée par l'utilisateur, que l'on
peut ensuite facilement exploiter à l'aide de l'évènement
onselectionchanged et une
fonction adéquate :
<%@ Page Language="C#"
%>
<script runat="server">
void SelectDate(object s, EventArgs e)
{
Resultat.Text = "Date choisie: " +
Calendrier.SelectedDate.ToShortDateString();
}
</script>
<form runat="server">
<asp:Calendar id="Calendrier" onload="SelectDate"
onselectionchanged="SelectDate" runat="server" BorderStyle="Double"
BorderWidth="3px" DayNameFormat="FirstTwoLetters" FirstDayOfWeek="Monday"
ShowGridLines="True" CellPadding="0" SelectedDate="2004-05-03"></asp:Calendar>
<asp:Label id="Resultat" runat="server" />
</form>
Une sélection plus intéressante
peut être effectuée en modifiant la propriété
suivante:
SelectionMode="DayWeekMonth"
(ou "Day" par défaut,
"DayWeek", "DayMonth"...).
...qui nous permet de choisir, ici, soit un
jour, soit une semaine entière, soit le mois entier.
Dans ce cas, l'affichage du résultat peut être
adapté grâce à la propriété
SelectedDates, méthode
qui nous permet de calculer le nombre de jours choisis :
<script runat="server">
void SelectDate(object s, EventArgs e)
{
switch (Calendrier.SelectedDates.Count)
{
case (1):
Resultat.Text
= "Date choisie: " + Calendrier.SelectedDate.ToShortDateString();
break;
case (7):
Resultat.Text
= "Période choisie: la semaine commençant le
" + Calendrier.SelectedDate.ToShortDateString();
break;
default:
Resultat.Text
= "Période choisie: le mois commençant le "
+ Calendrier.SelectedDate.ToShortDateString();
break;
}
}
</script>
Tel quel, cela ne sert pas forcément
à grand chose, mais on peut tout aussi facilement lier
ce calendrier à un champ texte, où l'utilisateur
doit taper une date dans un format précis:
void
SelectDate(object s, EventArgs e)
{
Champs.Text = Calendrier.SelectedDate.ToString("yyyy-MM-dd");
}
 |
Forum |
|
|
Réagissez
dans les forums
de JDN Développeurs
|
Ce ne sont là que quelques applications de Calendar,
vous pouvez ensuite utiliser les capacités HTML et CSS
du navigateur pour par exemple faire apparaître/disparaître
le calendrier au clic d'un bouton, ou grâce à .NET
spécifier l'affichage de certains jours, et même
définir les jours à venir via XML. |