使用 CascadingDropDown 预设置列表条目 (VB)

作者 :Christian Wenz

下载 PDF

AJAX 控件工具包中的 CascadingDropDown 控件扩展了 DropDownList 控件,以便一个 DropDownList 中的更改将关联值加载到另一个 DropDownList 中。 使用少量代码,可以在动态加载数据后预先选择列表元素。

概述

AJAX 控件工具包中的 CascadingDropDown 控件扩展了 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 扩展程序,提供 Web 服务 URL 和方法信息:

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

CascadingDropDown 扩展程序随后使用以下方法签名异步调用 Web 服务:

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

方法返回 CascadingDropDown 值类型的数组。 该类型的构造函数首先需要列表条目的描述文字,然后 (HTML value 属性的值) 。 如果第三个参数设置为 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

在浏览器中加载页面将在下拉列表中填充三个供应商,第二个供应商是预先选择的。

列表已填充并自动预先选择

列表已填充并自动预先选择 (单击以查看全尺寸图像)