Предустановка записей списка с помощью CascadingDropDown (VB)

Кристиан Венц

Загрузить PDF-файл

Элемент управления CascadingDropDown в наборе элементов управления AJAX расширяет элемент управления DropDownList, чтобы изменения в одном DropDownList загружали связанные значения в другом DropDownList. При использовании немного кода возможно, что элемент списка будет предварительно выбран после динамической загрузки данных.

Общие сведения

Элемент управления CascadingDropDown в наборе элементов управления AJAX расширяет элемент управления DropDownList, чтобы изменения в одном DropDownList загружали связанные значения в другом DropDownList. (Например, один список содержит список штатов США, а следующий список заполняется крупными городами в этом штате.) При использовании немного кода возможно, что элемент списка будет предварительно выбран после динамической загрузки данных.

Этапы

Чтобы активировать функциональные возможности ASP.NET AJAX и control Toolkit, ScriptManager элемент управления должен быть размещен в любом месте страницы (но внутри <form> элемента ):

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

Затем требуется элемент управления DropDownList:

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

Для этого списка добавляется расширитель CascadingDropDown, предоставляющий URL-адрес веб-службы и сведения о методе:

<ajaxToolkit:CascadingDropDown ID="ccd1" runat="server"
 ServicePath="CascadingDropdown2.vb.asmx" ServiceMethod="GetVendors"
 TargetControlID="VendorsList" Category="Vendor" />

Затем расширитель CascadingDropDown асинхронно вызывает веб-службу со следующей сигнатурой метода:

Public Function MethodNameHere(ByVal knownCategoryValues As String, ByVal category As String) As CascadingDropDownNameValue()

Метод возвращает массив типа CascadingDropDown. Конструктор типа ожидает сначала подпись записи списка, а затем значение (атрибут HTMLvalue). Если для третьего аргумента задано значение true, элемент списка автоматически выбирается в браузере.

<%@ WebService Language="VB" Class="CascadingDropDown2" %>
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 CascadingDropDown2
 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", True))
 l.Add(New CascadingDropDownNameValue("Premier Sport, Inc.", "3"))
 Return l.ToArray()
 End Function
End Class

При загрузке страницы в браузере в раскрывающемся списке заполнится три поставщика, второй из которых будет предварительно выбран.

Список заполняется и предварительно выбран автоматически

Список заполняется и предварительно выбран автоматически (щелкните для просмотра полноразмерного изображения)