Prédéfinition des entrées de liste avec CascadingDropDown (C#)
par Christian Wenz
Le contrôle CascadingDropDown dans ajax Control Toolkit étend un contrôle DropDownList afin que les modifications d’un DropDownList chargent les valeurs associées dans un autre DropDownList. Avec un peu de code, il est possible qu’un élément de liste soit présélectionné une fois que les données ont été chargées dynamiquement.
Vue d’ensemble
Le contrôle CascadingDropDown dans ajax Control Toolkit étend un contrôle DropDownList afin que les modifications d’un DropDownList chargent les valeurs associées dans un autre DropDownList. (Pour instance, une liste fournit une liste des États américains, et la liste suivante est ensuite remplie avec les principales villes de cet état.) Avec un peu de code, il est possible qu’un élément de liste soit présélectionné une fois que les données ont été chargées dynamiquement.
Étapes
Pour activer les fonctionnalités de ASP.NET AJAX et du Kit de ressources de contrôle, le ScriptManager
contrôle doit être placé n’importe où sur la page (mais dans l’élément <form>
) :
<asp:ScriptManager ID="asm" runat="server" />
Ensuite, un contrôle DropDownList est requis :
<div>
Vendor: <asp:DropDownList ID="VendorsList" runat="server"/>
</div>
Pour cette liste, un extendeur CascadingDropDown est ajouté, fournissant des informations sur l’URL et la méthode du service web :
<ajaxToolkit:CascadingDropDown ID="ccd1" runat="server"
ServicePath="CascadingDropdown2.cs.asmx" ServiceMethod="GetVendors"
TargetControlID="VendorsList" Category="Vendor" />
L’extension CascadingDropDown appelle ensuite de façon asynchrone un service web avec la signature de méthode suivante :
public CascadingDropDownNameValue[] MethodNameHere(string knownCategoryValues, string category)
La méthode retourne un tableau de type CascadingDropDown valeur. Le constructeur du type attend d’abord la légende de l’entrée de liste, puis la valeur (attribut HTMLvalue
). Si le troisième argument a la valeur true, l’élément list est automatiquement sélectionné dans le navigateur.
<%@ WebService Language="C#" Class="CascadingDropdown2" %>
using System.Web.Script.Services;
using AjaxControlToolkit;
using System;
using System.Web;
using System.Web.Services;
using System.Web.Services.Protocols;
using System.Collections.Generic;
[ScriptService]
public class CascadingDropdown2 : System.Web.Services.WebService
{
[WebMethod]
public CascadingDropDownNameValue[] GetVendors(string knownCategoryValues, string
category)
{
List<CascadingDropDownNameValue> l = new List<CascadingDropDownNameValue>();
l.Add(new CascadingDropDownNameValue(
"International", "1"));
l.Add(new CascadingDropDownNameValue(
"Electronic Bike Repairs & Supplies", "2", true));
l.Add(new CascadingDropDownNameValue(
"Premier Sport, Inc.", "3"));
return l.ToArray();
}
}
Le chargement de la page dans le navigateur permet de remplir la liste déroulante avec trois fournisseurs, le deuxième étant présélectionné.
La liste est remplie et présélectionnée automatiquement (cliquez pour afficher l’image en taille réelle)