Compartilhar via


Preenchendo uma lista usando CascadingDropDown (VB)

por Christian Wenz

Baixar PDF

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 apresenta estados dos EUA e a próxima lista é preenchida com as principais cidades desse estado.) O primeiro desafio a ser resolvido é preencher uma lista suspensa utilizando este 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 apresenta estados dos EUA e a próxima lista é preenchida com as principais cidades desse estado.) O primeiro desafio a ser resolvido é preencher uma lista suspensa utilizando este controle.

Steps

Para ativar a funcionalidade do ASP.NET AJAX e do Kit de Ferramentas de Controle, o ScriptManager controle deve ser colocado em qualquer lugar da 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 esta 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 lista
  • ServiceMethod: método Web que fornece as entradas de lista
  • TargetControlID: Identificação (ID) da lista suspensa
  • Category: informações de categoria que são enviadas para o método Web quando chamadas
  • PromptText: texto exibido ao carregar de forma assíncrona os dados da lista 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, é necessário fornecer primeiro o texto do item da lista e, em seguida, seu valor, 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

A lista é preenchida automaticamente (clique para exibir a imagem em tamanho real)