Compilazione di un elenco tramite CascadingDropDown (VB)
Il controllo CascadingDropDown in AJAX Control Toolkit estende un controllo DropDownList in modo che le modifiche apportate a un elenco a discesa carichino i valori associati in un altro elenco a discesa. Un elenco, ad esempio, fornisce un elenco di Stati Uniti e l'elenco successivo viene quindi riempito con le principali città in tale stato. La prima sfida da risolvere consiste nel compilare effettivamente un elenco a discesa usando questo controllo.
Panoramica
Il controllo CascadingDropDown in AJAX Control Toolkit estende un controllo DropDownList in modo che le modifiche apportate a un elenco a discesa carichino i valori associati in un altro elenco a discesa. Un elenco, ad esempio, fornisce un elenco di Stati Uniti e l'elenco successivo viene quindi riempito con le principali città in tale stato. La prima sfida da risolvere consiste nel compilare effettivamente un elenco a discesa usando questo controllo.
Passaggi
Per attivare la funzionalità di ASP.NET AJAX e Control Toolkit, il ScriptManager
controllo deve essere inserito ovunque nella pagina (ma all'interno dell'elemento <form>
):
<asp:ScriptManager ID="asm" runat="server" />
È quindi necessario un controllo DropDownList:
<div>
Vendor: <asp:DropDownList ID="VendorsList" runat="server" />
</div>
Per questo elenco, viene aggiunto un estensione CascadingDropDown. Invierà una richiesta asincrona a un servizio Web che restituirà quindi un elenco di voci da visualizzare nell'elenco. Per il funzionamento, è necessario impostare gli attributi CascadingDropDown seguenti:
ServicePath
: URL di un servizio Web che recapita le voci dell'elencoServiceMethod
: metodo Web che recapita le voci di elencoTargetControlID
: ID dell'elenco a discesaCategory
: informazioni sulla categoria inviate al metodo Web quando viene chiamatoPromptText
: testo visualizzato quando si caricano in modo asincrono i dati dell'elenco dal server
Ecco il markup per l'elemento CascadingDropDown
. L'unica differenza tra C# e VB è il nome del servizio Web associato:
<ajaxToolkit:CascadingDropDown ID="ccd1" runat="server"
ServicePath="CascadingDropdown0.vb.asmx" ServiceMethod="GetVendors"
TargetControlID="VendorsList" Category="Vendor" />
Il codice JavaScript proveniente dall'estensione CascadingDropDown
chiama un metodo di servizio Web con la firma seguente:
Public Function MethodNameHere(ByVal knownCategoryValues As String, ByVal category As String) As CascadingDropDownNameValue()
Pertanto, l'aspetto importante è che il metodo deve restituire una matrice di tipo CascadingDropDownNameValue
(definita dalla ASP.NET AJAX Control Toolkit). Nel costruttore, prima il CascadingDropDownNameValue
testo della voce dell'elenco e quindi il relativo valore deve essere fornito, esattamente come <option value="VALUE">NAME</option>
avviene in HTML. Ecco alcuni dati di esempio:
<%@ 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
Il caricamento della pagina nel browser attiva l'elenco da compilare con tre fornitori.
L'elenco viene riempito automaticamente (fare clic per visualizzare l'immagine full-size)