Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Ovládací prvek CascadingDropDown v sadě nástrojů AJAX Control Toolkit rozšiřuje ovládací prvek DropDownList tak, aby změny v jednom rozevíracím seznamu načítá přidružené hodnoty v jiném rozevíracím seznamu. (Například jeden seznam obsahuje seznam států USA a další seznam se pak vyplní hlavními městy v tomto státě.) Prvním úkolem, který je potřeba vyřešit, je vyplnit rozevírací seznam pomocí tohoto ovládacího prvku.
Přehled
Ovládací prvek CascadingDropDown v sadě nástrojů AJAX Control Toolkit rozšiřuje ovládací prvek DropDownList tak, aby změny v jednom rozevíracím seznamu načítá přidružené hodnoty v jiném rozevíracím seznamu. (Například jeden seznam obsahuje seznam států USA a další seznam se pak vyplní hlavními městy v tomto státě.) Prvním úkolem, který je potřeba vyřešit, je vyplnit rozevírací seznam pomocí tohoto ovládacího prvku.
Postup
Aby bylo možné aktivovat funkce ASP.NET AJAX a Control Toolkit, ScriptManager musí být ovládací prvek umístěn kdekoli na stránce (ale v rámci elementu <form> ):
<asp:ScriptManager ID="asm" runat="server" />
Pak se vyžaduje ovládací prvek DropDownList:
<div>
Vendor: <asp:DropDownList ID="VendorsList" runat="server" />
</div>
Pro tento seznam je přidán extender CascadingDropDown. Odešle asynchronní požadavek webové službě, která pak vrátí seznam položek, které se mají v seznamu zobrazit. Aby to fungovalo, je potřeba nastavit následující atributy CascadingDropDown:
-
ServicePath: Adresa URL webové služby doručující položky seznamu -
ServiceMethod: Webová metoda doručování položek seznamu -
TargetControlID: ID rozevíracího seznamu -
Category: Informace o kategoriích, které se při vyvolání odesílají do webové metody -
PromptText: Text zobrazený při asynchronním načítání dat seznamu ze serveru
Tady je kód elementu CascadingDropDown . Jediným rozdílem mezi jazykem C# a VB je název přidružené webové služby:
<ajaxToolkit:CascadingDropDown ID="ccd1" runat="server"
ServicePath="CascadingDropdown0.cs.asmx" ServiceMethod="GetVendors"
TargetControlID="VendorsList" Category="Vendor" />
Kód JavaScriptu pocházející z extenderu CascadingDropDown volá metodu webové služby s následujícím podpisem:
public CascadingDropDownNameValue[] MethodNameHere(string knownCategoryValues,
string category)
Důležitým aspektem je, že metoda musí vracet pole typu CascadingDropDownNameValue (definované ASP.NET sadou nástrojů AJAX Control Toolkit). V konstruktoru CascadingDropDownNameValue musí být nejprve uveden text položky seznamu a pak jeho hodnota, stejně jako <option value="VALUE">NAME</option> v HTML. Tady jsou ukázková data:
<%@ WebService Language="C#" Class="CascadingDropdown0" %>
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 CascadingDropdown0 : 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"));
l.Add(new CascadingDropDownNameValue("Premier Sport, Inc.", "3"));
return l.ToArray();
}
}
Načtení stránky v prohlížeči aktivuje vyplnění seznamu třemi dodavateli.
Seznam se vyplní automaticky (kliknutím zobrazíte obrázek v plné velikosti).