Compartilhar via


Preencher uma lista usando o 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 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 lista
  • ServiceMethod: método Web que fornece as entradas de lista
  • TargetControlID: ID da lista suspensa
  • Category: informações de categoria enviadas ao método Web quando chamado
  • PromptText: 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

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