加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

十二、CascadingDropDown——级联下拉列表

发布时间:2020-12-17 02:07:42 所属栏目:安全 来源:网络整理
导读:? CascadingDropDown 级联下拉列表,就是一个无刷新的多级联动。 ? 举例如下: 这里用一个三级联动的例子说明,其它的二级或更多级的联动都很容易了。 1. ?????? 添加一个 ScriptManage 2. ?????? 添加三个 DropDownList 和三个 CascadingDropDown ,每个 Dr

?

CascadingDropDown级联下拉列表,就是一个无刷新的多级联动。

?

举例如下:

这里用一个三级联动的例子说明,其它的二级或更多级的联动都很容易了。

1.?????? 添加一个ScriptManage

2.?????? 添加三个DropDownList和三个CascadingDropDown,每个DropDownList都需要对应一个CascadingDropDown

??????? <cc1:CascadingDropDown ID="CascadingDropDown_1" runat="server"

???????????? ??????????????????TargetControlID="DropDownList_1"??????? //对应的下拉框表控件的ID

?????????????????????????????? ServicePath="CascadingDropDown.asmx"??????? //要调用的web服务

?????????????????????????????? ServiceMethod="getListItems"??????? //要调用的web服务的方法

????????????? ?????????????????Category="一级"??????? //当前下拉列表的类型

?????????????????????????????? LoadingText="正在加载一级列表。。。"??????? //正在加载时显示的文本

?????????????????????????????? PromptText="请选择一级列表">??????? //当下拉列表中无数据或没有选择数据时给用户的提示

??????? </cc1:CascadingDropDown>

??????? <asp:DropDownList ID="DropDownList_1" runat="server">

??????? </asp:DropDownList>

??????? <cc1:CascadingDropDown ID="CascadingDropDown_2" runat="server"

?????????????????????????????? ParentControlID="DropDownList_1"??????? //对于联动的最上层下拉列表不需要这个参数,而其它的都需要

??? ???????????????????????????TargetControlID="DropDownList_2"

?????????????????????????????? ServicePath="CascadingDropDown.asmx"

?????????????????????????????? ServiceMethod="getListItems"

?????????????????????????????? Category="二级"

?????????????????????? ????????LoadingText="正在加载二级列表"

?????????????????????????????? PromptText="请选择二级列表">

??????? </cc1:CascadingDropDown>

??????? <asp:DropDownList ID="DropDownList_2" runat="server">

??????? </asp:DropDownList>

??????? <cc1:CascadingDropDown ID="CascadingDropDown_3" runat="server"

?????????????????????????????? ParentControlID="DropDownList_2"

?????????????????????????????? TargetControlID="DropDownList_3"

?????????????????????????????? ServicePath="CascadingDropDown.asmx"

?????????????????????????????? ServiceMethod="getListItems"

?????????????????????????????? Category="三级"

?????????????????????????????? LoadingText="正在加载三级列表"

?????????????????????????????? PromptText="请选择三级列表">

??????? </cc1:CascadingDropDown>

??????? <asp:DropDownList ID="DropDownList_3" runat="server">

??????? </asp:DropDownList>

3.?????? 编写web服务

<%@ WebService Language="C#" Class="AjaxToolkit.CascadingDropDown" %>

using System;

using System.Collections;

using System.Linq;

using System.Web;

using System.Web.Services;

using System.Web.Services.Protocols;

using System.Xml.Linq;

?

namespace AjaxToolkit

{

??? /// <summary>

??? ///CascadingDropDown 的摘要说明

??? /// </summary>

??? [WebService(Namespace = "http://tempuri.org/")]

??? [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]

??? //若要允许使用 ASP.NET AJAX 从脚本中调用此 Web 服务,请取消对下行的注释。

??? [System.Web.Script.Services.ScriptService]

??? public class CascadingDropDown : System.Web.Services.WebService

??? {

??????? public CascadingDropDown()

??????? {

??????????? //如果使用设计的组件,请取消注释以下行

??????????? //InitializeComponent();

??????? }

?

??????? [WebMethod]

??????? public AjaxControlToolkit.CascadingDropDownNameValue[] getListItems(string knownCategoryValues,string category)??????? //必须使用CascadingDropDownNameValue数组返回

??????? {

??????????? System.Collections.Generic.List<AjaxControlToolkit.CascadingDropDownNameValue> cdnvs =

??????????????? new System.Collections.Generic.List<AjaxControlToolkit.CascadingDropDownNameValue>();

?

??????????? System.Threading.Thread.Sleep(1 * 1000);?? //延时一秒

??????????? System.Collections.Specialized.StringDictionary kv =

AjaxControlToolkit.CascadingDropDown.ParseKnownCategoryValuesString(knownCategoryValues); ??//获取下拉列表值

??????????? if (category == "一级")

??????????? {

??????????????? for (int i = 0; i < 6; i++)

??????????????? {

??????????????????? string name = category + "_" + i.ToString();

??????????????????? string value = "1_" + i.ToString();

??????????????????? cdnvs.Add(new AjaxControlToolkit.CascadingDropDownNameValue(name,value));

??????????????? }

??????????? }

??????????? else if (category == "二级")

??????????? {

??????????????? for (int i = 0; i < 6; i++)

???????? ???????{

??????????????????? string name = "二级_" + i.ToString();

??????????????????? string value = kv["一级"].ToString() + "_" + i.ToString();??? //因为kvICollection接口,所以必须使用[“”]方法读取数据,其中“”是CascadingDropDown属性中的Category

??????????????????? cdnvs.Add(new AjaxControlToolkit.CascadingDropDownNameValue(name,value));

??????????????? }

??????????? }

??????????? else if (category == "三级")

??????????? {

??????????????? for (int i = 0; i < 6; i++)

??????????????? {

??????????????????? string name = "三级_" + i.ToString();

??????????????????? string value = kv["二级"].ToString() + "_" + i.ToString();

??????????????????? cdnvs.Add(new AjaxControlToolkit.CascadingDropDownNameValue(name,value));

??????????????? }

??????????? }

???????????

??????????? return cdnvs.ToArray<AjaxControlToolkit.CascadingDropDownNameValue>();?????? //返回CascadingDropDownNameValue类型数组

??????? }

??? }

}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读