Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
por Christian Wenz
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 (Clique para ver a imagem em tamanho real)