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

作者 :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.cs.asmx" ServiceMethod="GetVendors"
 TargetControlID="VendorsList" Category="Vendor" />

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

public CascadingDropDownNameValue[] MethodNameHere(string knownCategoryValues, string category)

方法返回 CascadingDropDown 值类型的数组。 该类型的构造函数首先需要列表条目的描述文字,然后 (HTML value 属性的值) 。 如果第三个参数设置为 true,则会自动在浏览器中选择列表元素。

<%@ WebService Language="C#" Class="CascadingDropdown2" %>
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 CascadingDropdown2 : 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", true));
 l.Add(new CascadingDropDownNameValue(
 "Premier Sport, Inc.", "3"));
 return l.ToArray();
 }
}

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

自动填充并预选列表

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