Preencher uma lista usando o CascadingDropDown (VB)
por Christian Wenz
O controle CascadingDropDown no Kit de Ferramentas de Controle AJAX estende um controle DropDownList para que as alterações em um DropDownList carreguem valores associados em outro DropDownList. (Por exemplo, uma lista fornece uma lista de estados dos EUA e a próxima lista é preenchida com as principais cidades desse estado.) O primeiro desafio a ser resolvido é realmente preencher uma lista suspensa usando esse controle.
Visão geral
O controle CascadingDropDown no Kit de Ferramentas de Controle AJAX estende um controle DropDownList para que as alterações em um DropDownList carreguem valores associados em outro DropDownList. (Por exemplo, uma lista fornece uma lista de estados dos EUA e a próxima lista é preenchida com as principais cidades desse estado.) O primeiro desafio a ser resolvido é realmente preencher uma lista suspensa usando esse controle.
Etapas
Para ativar a funcionalidade de ASP.NET AJAX e o Kit de Ferramentas de Controle, o ScriptManager
controle deve ser colocado em qualquer lugar na página (mas dentro do <form>
elemento):
<asp:ScriptManager ID="asm" runat="server" />
Em seguida, um controle DropDownList é necessário:
<div>
Vendor: <asp:DropDownList ID="VendorsList" runat="server" />
</div>
Para essa lista, um extensor CascadingDropDown é adicionado. Ele enviará uma solicitação assíncrona para um serviço Web que retornará uma lista de entradas a serem exibidas na lista. Para que isso funcione, os seguintes atributos CascadingDropDown precisam ser definidos:
ServicePath
: URL de um serviço Web que fornece as entradas de listaServiceMethod
: método Web que fornece as entradas de listaTargetControlID
: ID da lista suspensaCategory
: informações de categoria enviadas ao método Web quando chamadoPromptText
: texto exibido ao carregar dados de lista de forma assíncrona do servidor
Aqui está a marcação do CascadingDropDown
elemento . A única diferença entre C# e VB é o nome do serviço Web associado:
<ajaxToolkit:CascadingDropDown ID="ccd1" runat="server"
ServicePath="CascadingDropdown0.vb.asmx" ServiceMethod="GetVendors"
TargetControlID="VendorsList" Category="Vendor" />
O código JavaScript proveniente do CascadingDropDown
extensor chama um método de serviço Web com a seguinte assinatura:
Public Function MethodNameHere(ByVal knownCategoryValues As String, ByVal category As String) As CascadingDropDownNameValue()
Portanto, o aspecto importante é que o método precisa retornar uma matriz de tipo CascadingDropDownNameValue
(definida pelo ASP.NET Kit de Ferramentas de Controle AJAX). CascadingDropDownNameValue
No construtor, primeiro o texto da entrada de lista e, em seguida, seu valor deve ser fornecido, assim como <option value="VALUE">NAME</option>
faria em HTML. Aqui estão alguns dados de exemplo:
<%@ 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
Carregar a página no navegador disparará a lista a ser preenchida com três fornecedores.
A lista é preenchida automaticamente (Clique para exibir a imagem em tamanho real)