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
在浏览器中加载页面将在下拉列表中填充三个供应商,第二个供应商是预先选择的。
列表已填充并自动预先选择 (单击以查看全尺寸图像)