概述
AJAX Control Toolkit 中的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()
重要的是 ,该方法需要返回一个类型为CascadingDropDownNameValue的数组 (在ASP.NET AJAX Control Toolkit 有这个类型的定义 )。在 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
浏览器加载该页面时 ,会触发对列表的填充 ,于是列表含有三个供应商的信息。
.png)
列表会自动填充
下一篇教程 |