RECHERCHE

Plan du site

BOURSE

 

RUBRIQUES

 
 TUTORIEL TECHNOS .NET 
ASP.NET : utiliser le contrôleur Calendar
Approche du contrôleur standard le plus riche, permettant d'insérer facilement un calendrier complet au sein de son application Web. (04/05/2004)

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.
 
Xavier Borderie, JDN Développeurs
 
Accueil | Haut de page
 
 



Votre avis sur cette publicité