使用 CascadingDropDown 填充列表 (C#)
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 服务的 URLServiceMethod
:传递列表条目的 Web 方法TargetControlID
:下拉列表的 IDCategory
:调用时提交到 Web 方法的类别信息PromptText
:从服务器异步加载列表数据时显示的文本
下面是 元素的 CascadingDropDown
标记。 C# 和 VB 之间的唯一区别是关联的 Web 服务的名称:
<ajaxToolkit:CascadingDropDown ID="ccd1" runat="server"
ServicePath="CascadingDropdown0.cs.asmx" ServiceMethod="GetVendors"
TargetControlID="VendorsList" Category="Vendor" />
来自扩展程序的 CascadingDropDown
JavaScript 代码使用以下签名调用 Web 服务方法:
public CascadingDropDownNameValue[] MethodNameHere(string knownCategoryValues,
string category)
因此,重要的是该方法需要返回 ASP.NET AJAX Control Toolkit) 定义的类型 CascadingDropDownNameValue
(数组。 在 CascadingDropDownNameValue
构造函数中,首先必须提供列表条目的文本,然后必须提供其值,就像在 HTML 中一样 <option value="VALUE">NAME</option>
。 下面是一些示例数据:
<%@ WebService Language="C#" Class="CascadingDropdown0" %>
using System.Web.Script.Services;
using AjaxControlToolkit;
using System;
using System.Web;
using System.Web.Services;
using System.Web.Services.Protocols;
using System.Collections.Generic;
[ScriptService]
public class CascadingDropdown0 : System.Web.Services.WebService
{
[WebMethod]
public CascadingDropDownNameValue[] GetVendors(string knownCategoryValues,
string category)
{
List<CascadingDropDownNameValue> l = new List<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();
}
}
在浏览器中加载页面将触发列表以填充三个供应商。
列表会自动填充 (单击以查看全尺寸图像)