Partilhar via


Preencher uma lista usando CascadingDropDown (VB)

por Christian Wenz

Descarregar PDF

O controlo CascadingDropDown no AJAX Control Toolkit estende um controlo DropDownList para que as alterações num DropDownList carreguem valores associados noutro DropDownList. (Por exemplo, uma lista fornece os estados dos EUA, e a próxima é preenchida com as principais cidades desse estado.) O primeiro desafio a resolver é preencher efetivamente uma lista suspensa usando este controle.

Descrição geral

O controlo CascadingDropDown no AJAX Control Toolkit estende um controlo DropDownList para que as alterações num DropDownList carreguem valores associados noutro DropDownList. (Por exemplo, uma lista apresenta os estados dos EUA, e a lista seguinte é preenchida com as principais cidades desse estado.) O primeiro desafio a resolver é realmente preencher uma lista suspensa usando este controlo.

Passos

Para ativar a funcionalidade do ASP.NET AJAX e do Control Toolkit, o ScriptManager controlo deve ser colocado em qualquer lugar da página (mas dentro do <form> elemento):

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

Depois, é necessário um controlador DropDownList:

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

Para esta lista, é adicionado um extensor CascadingDropDown. Enviará um pedido assíncrono para um serviço web que depois devolverá uma lista de entradas a serem exibidas na lista. Para que isto funcione, é necessário definir os seguintes atributos CascadingDropDown:

  • ServicePath: URL de um serviço web que entrega as entradas da lista
  • ServiceMethod: Método web que fornece as entradas da lista
  • TargetControlID: ID da lista suspensa
  • Category: Informação de categoria que é submetida ao método web quando chamada
  • PromptText: Texto exibido ao carregar assíncronamente dados da lista do servidor

Aqui está a marcação para o 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 aspeto importante é que o método precisa de devolver um array de tipo CascadingDropDownNameValue (definido pelo ASP.NET AJAX Control Toolkit). No CascadingDropDownNameValue construtor, primeiro deve ser fornecido o texto da entrada da lista e depois o seu valor, tal como <option value="VALUE">NAME</option> acontece 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 fará com que a lista seja preenchida com três fornecedores.

A lista é preenchida automaticamente

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