使用 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 服务发送异步请求,然后返回要显示在列表中的条目列表。 为此,需要设置以下 CascadingDropDown 属性:

  • ServicePath:传递列表条目的 Web 服务的 URL
  • ServiceMethod:传递列表条目的 Web 方法
  • TargetControlID:下拉列表的 ID
  • Category:调用时提交到 Web 方法的类别信息
  • PromptText:从服务器异步加载列表数据时显示的文本

下面是 元素的 CascadingDropDown 标记。 C# 和 VB 之间的唯一区别是关联的 Web 服务的名称:

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

来自扩展程序的 CascadingDropDown JavaScript 代码使用以下签名调用 Web 服务方法:

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

因此,重要的是该方法需要返回 ASP.NET AJAX Control Toolkit) 定义的类型 CascadingDropDownNameValue (数组。 在 CascadingDropDownNameValue 构造函数中,首先必须提供列表条目的文本,然后必须提供其值,就像在 HTML 中一样 <option value="VALUE">NAME</option> 。 下面是一些示例数据:

<%@ 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

在浏览器中加载页面将触发列表以填充三个供应商。

自动填充列表

列表会自动填充 (单击以查看全尺寸图像)