Vyplnění seznamu ovládacím prvkem CascadingDropDown (VB)
Ovládací prvek CascadingDropDown v sadě nástrojů AJAX Control Toolkit rozšiřuje ovládací prvek DropDownList tak, aby změny v jednom DropDownList načítá přidružené hodnoty do jiného DropDownList. (Například jeden seznam obsahuje seznam států USA a další seznam je pak vyplněný hlavními městy v tomto státě.) Prvním úkolem, který je potřeba vyřešit, je vyplnění rozevíracího seznamu 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 DropDownList načítá přidružené hodnoty do jiného DropDownList. (Například jeden seznam obsahuje seznam států USA a další seznam je pak vyplněný hlavními městy v tomto státě.) Prvním úkolem, který je potřeba vyřešit, je vyplnění rozevíracího seznamu 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" />
Potom 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 seznamuServiceMethod
: Webová metoda doručování položek seznamuTargetControlID
: ID rozevíracího seznamuCategory
: Informace o kategoriích, které se při zavolání odesílají do webové metodyPromptText
: Text zobrazený při asynchronním načítání dat seznamu ze serveru
Tady je kód elementu CascadingDropDown
. Jediným rozdílem mezi C# a VB je název přidružené webové služby:
<ajaxToolkit:CascadingDropDown ID="ccd1" runat="server"
ServicePath="CascadingDropdown0.vb.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 Function MethodNameHere(ByVal knownCategoryValues As String, ByVal category As String) As CascadingDropDownNameValue()
Důležitým aspektem je, že metoda musí vracet pole typu CascadingDropDownNameValue
(definované ASP.NET AJAX Control Toolkit). V konstruktoru CascadingDropDownNameValue
musí být nejprve zadaný text položky seznamu a potom její hodnota, stejně jako <option value="VALUE">NAME</option>
v HTML. Tady jsou ukázková data:
<%@ WebService Language="VB" Class="CascadingDropDown0" %>
Imports System.Web.Script.Services
Imports AjaxControlToolkit
Imports System.Web
Imports System.Web.Services
Imports System.Web.Services.Protocols
Imports System.Collections.Generic
<ScriptService()> _
Public Class CascadingDropDown0
Inherits System.Web.Services.WebService
<WebMethod()> _
Public Function GetVendors(ByVal knownCategoryValues As String, ByVal category As String) As CascadingDropDownNameValue()
Dim l As New List(Of 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()
End Function
End Class
Načtením stránky v prohlížeči se aktivuje vyplnění seznamu třemi dodavateli.
Seznam se vyplní automaticky (kliknutím zobrazíte obrázek v plné velikosti).