Wypełnianie listy przy użyciu metody CascadingDropDown (VB)

Autor: Christian Wenz

Pobierz plik PDF

Kontrolka CascadingDropDown w zestawie narzędzi AJAX Control Toolkit rozszerza kontrolkę DropDownList, aby zmiany w jednej kontrolce DropDownList wczytywały odpowiednie wartości w innej kontrolce DropDownList. (Na przykład jedna lista zawiera listę stanów USA, a następna lista jest następnie wypełniona dużymi miastami w tym stanie). Pierwszym wyzwaniem do rozwiązania jest wypełnienie listy rozwijanej przy użyciu tej kontrolki.

Przegląd

Kontrolka CascadingDropDown w zestawie narzędzi AJAX Control Toolkit rozszerza kontrolkę DropDownList, aby zmiany w jednej kontrolce DropDownList wczytywały odpowiednie wartości w innej kontrolce DropDownList. (Na przykład jedna lista zawiera listę stanów USA, a następna lista jest następnie wypełniona dużymi miastami w tym stanie). Pierwszym wyzwaniem do rozwiązania jest wypełnienie listy rozwijanej przy użyciu tej kontrolki.

Kroki

Aby aktywować funkcjonalność ASP.NET AJAX i zestawu narzędzi Control Toolkit, kontrolka ScriptManager musi zostać umieszczona w dowolnym miejscu na stronie (ale w elemecie <form> ):

<asp:ScriptManager ID="asm" runat="server" />

Następnie wymagana jest kontrolka DropDownList:

<div>
 Vendor: <asp:DropDownList ID="VendorsList" runat="server" />
</div>

Na potrzeby tej listy dodano rozszerzenie CascadingDropDown. Spowoduje to wysłanie żądania asynchronicznego do usługi internetowej, która następnie zwróci listę wpisów, które mają być wyświetlane na liście. Aby to zadziałało, należy ustawić następujące atrybuty CascadingDropDown:

  • ServicePath: adres URL serwisu internetowego dostarczającego wpisy listy
  • ServiceMethod: Metoda webowa dostarczająca wpisy listy
  • TargetControlID: identyfikator listy rozwijanej
  • Category: informacje o kategorii przesyłane do metody internetowej po wywołaniu
  • PromptText: Tekst wyświetlany podczas asynchronicznego ładowania danych listy z serwera

Oto znaczniki dla CascadingDropDown elementu. Jedyną różnicą między językiem C# i VB jest nazwa skojarzonej usługi internetowej:

<ajaxToolkit:CascadingDropDown ID="ccd1" runat="server"
 ServicePath="CascadingDropdown0.vb.asmx" ServiceMethod="GetVendors"
 TargetControlID="VendorsList" Category="Vendor" />

Kod JavaScript pochodzący z CascadingDropDown rozszerzenia wywołuje metodę usługi internetowej z następującym podpisem:

Public Function MethodNameHere(ByVal knownCategoryValues As String, ByVal category As String) As CascadingDropDownNameValue()

Dlatego ważnym aspektem jest to, że metoda musi zwrócić tablicę typu CascadingDropDownNameValue (zdefiniowaną przez zestaw narzędzi ASP.NET AJAX Control Toolkit). W konstruktorze CascadingDropDownNameValue najpierw należy podać tekst wpisu listy, a następnie jego wartość, podobnie jak <option value="VALUE">NAME</option> w kodzie HTML. Oto kilka przykładowych danych:

<%@ 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

Załadowanie strony w przeglądarce spowoduje, że lista zostanie wypełniona przez trzech dostawców.

Lista jest wypełniana automatycznie

Lista jest wypełniana automatycznie (kliknij, aby wyświetlić obraz o pełnym rozmiarze)