RECHERCHE

Plan du site

BOURSE

 

RUBRIQUES

 
 TUTORIELS 
ASP.NET : utiliser le contrôle DropDownList
Mise en application de l'un des contrôles standards du Framework .NET, avec un menu déroulant qui redirige l'utilisateur.  (9 mars 2004)
 
ASP.NET modifier grandement le développement d'application Web grâce aux contrôles Web et serveur, qui permettent d'une part d'optimiser automatiquement certains affichages et tests selon le navigateur, mais aussi et surtout de pouvoir utiliser le modèle objet sur les éléments HTML.
Nous allons voir ici une petite application utilisant le contrôle DropDownList : un menu déroulant qui redirige l'utilisateur en fonction de la sélection qu'il fait. Un exercice simple dans un cadre strictement HTML + JavaScript, mais que nous allons reproduire ici en ASP.NET, avec le langage C#.


Mise en place
Voici notre code HTML, somme toute assez classique si l'on exclue les spécificités ASP.NET (en gras) :

<%@ Page Language="c#" Src="dropdownlist.aspx.cs" Inherits="ChoixAdresse" autoeventwireup="false" %>
<html>
  <body>
    <form id="choixadresse" method="post" runat="server">
      <asp:DropDownList id="ListePages" runat="server" AutoPostBack="True">
      </asp:DropDownList>

    </form>
  </body>
</html>

Notre entête spécifie bien que le code C# qui gère cette page se trouve dans le fichier dropdownlist.aspx.cs. Par ailleurs, nous y indiquons que notre Page hérité de la classe ChoixAdresse() qui est définie dans ce fichier, et que les évènements de page ne doivent pas être automatiquement liés.
Notre formulaire utilise l'attribut runat="server", qui indique que .NET prend en charge sa gestion.
On utilise ensuite un appel ASP au contrôle DropDownList, lui-même géré par le serveur, avec une ID. AutoPostBack indique que le formulaire est validé automatiquement (ASP.NET se charge de générer le JavaScript qui correspond au navigateur).

Le coeur du programme
Voici le code C# qui nous permettra de faire fonctionner notre menu :

using System;
using System.Web.UI.WebControls;

public class ChoixAdresse : System.Web.UI.Page
  {
  protected System.Web.UI.WebControls.DropDownList ListePages;

  public string adresse = "";

  private void RemplirListePages(object sender, System.EventArgs e)
    {
ListePages.Items.Add(new ListItem("Sélectionnez une page", "") );
ListePages.Items.Add(new ListItem("Accueil", "index.htm") );
ListePages.Items.Add(new ListItem("A propos", "apropos.htm") );
ListePages.Items.Add(new ListItem("Téléchargement", "telechargement.htm") );
ListePages.Items.Add(new ListItem("Contact", "contact.htm") );
    }

  private void ListePages_clic(object sender, System.EventArgs e)
    {
    Response.Redirect(ListePages.SelectedItem.Value );
    }

  override protected void OnInit(EventArgs e)
    {
    Initialisation();
    base.OnInit(e);
    }

  private void Initialisation()
    {
    this.ListePages.SelectedIndexChanged += new System.EventHandler(this.ListePages_clic);
    this.Load += new System.EventHandler(this.RemplirListePages);
    }
  }

La méthode OnInit() nous permet d'invoquer la méthode Initialisation(), qui se charge donc d'initialiser certains comportements (notamment, on associe l'évènement SelectedIndexChanged de ListePages, à la méthode ListePages_clic()), et d'invoquer ensuite la méthode RemplirListePage(), qui se charger de remplir notre menu déroulant, au chargement de la page...

Forums
* Discutez en sur les forums

C'est donc la méthode ListePages_clic() qui prend en charge l'évènement de clic. Nous pourrions lui faire faire de nombreuses choses, mais pour notre exemple nous sommes allés au plus simple : utiliser la méthode Redirect() de l'objet Response, méthode qui nous permet de renvoyer l'utilisateur vers l'adresse donnée en argument, ici appelée par ListePages.SelectedItem.Value.

 
[ Xavier BorderieJDNet
 
Accueil | Haut de page
 
 

 

 
 
[an error occurred while processing this directive]