ajax控件cascadingdropdown做两级联动

作者在 2008-05-02 01:10:57 发布以下内容
机子有点卡,没有办法,开机的时间太长了。
晕,连打字都有点卡……

控件名:cascadingdropdown
用途即效果:结合dropdownlist做两级联动
控件属性:

属性

说明

TargetControlID

要控制的dropdownlist的id

Category

主要就是为你CascadingDropDownr控件对应的下拉列表控件选定的值取个名字,好区分是下拉列表的值。怎么样说了,我将它简单的理解成就是给selectedvalue取了一个别名,要是理解错误,还望网友们指正。

PromptText

没有选择时显示的文字

LoadingText

加载数据时显示的文字

ServicePath

获取数据的Web Service,为每个DropDownList都要指定

ServiceMethod

获取数据的Web Method

ParentControlID

DropDownList的父控件ID

SelectedValue

默认的选择项的值



aspx页面:
托两个dropdownlist控件到页面,在托两个cascadingdropdown控件,并根据需要设置属性
eg: 
 <asp:DropDownList ID="da" runat="server">
        </asp:DropDownList>
        <br />
        <br />
        <cc1:cascadingdropdown id="Cascadingda" runat="server" TargetControlID="da" LoadingText="正在加载...." PromptText="请选择" Category="dalei" ServiceMethod="daleiList" ServicePath="WebService.asmx">
</cc1:cascadingdropdown> 
        <br />
        <asp:DropDownList ID="xiao" runat="server">
        </asp:DropDownList> <br />
        <br /><cc1:cascadingdropdown id="Cascadingxiao" runat="server" TargetControlID="xiao" LoadingText="正在加载....." PromptText="请选择" Category="xiaolei" ServiceMethod="xiaoleiList" ServicePath="WebService.asmx" ParentControlID="da">  //对比两个控件的属性设置,这个比上一个多了一个ParentControlID="da",这里设置他的父控件的id为“da”
        </cc1:CascadingDropDown>

WebService.cs页面:
using System;
using System.Web;
using System.Collections; 
using System.Web.Services;
using System.Web.Services.Protocols;
using System.Data.SqlClient;  //数据库连接所需命名空间
using System.Data;  //Dataset所需的命名空间
using System.Collections.Generic;  //这个是必须添加的,List<>所需的命名空间。
using System.Collections.Specialized;
using AjaxControlToolkit;  //ajax控件所需命名空间


/// <summary>
/// WebService 的摘要说明
/// </summary>
[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[System.Web.Script.Services.ScriptService]   //这个是必须的,要不会出现WebMethod error 12030等的错误,我做的时候就没有添加,弄了半天才发现原来是这个错误。并且要确保在方法的前面。
public class WebService : System.Web.Services.WebService {

    public WebService () {

        //如果使用设计的组件,请取消注释以下行
        //InitializeComponent();
    }


    [WebMethod]
    public CascadingDropDownNameValue[] daleiList(string knownCategoryValues, string category)  这里的参数等都不可以改变,除了daleiList可以是自己定义的之外,这里的daleiList虽然可以自己定义,但是一定要确保和aspx页面的ServiceMethod="daleiList" 一致,否则会出现WebMethod error
    {
        //StringDictionary kv = CascadingDropDown.ParseKnownCategoryValuesString(knownCategoryValues);  //如果是第一级则这个可以不要
        SqlConnection conn = new SqlConnection("server=(local);uid=sa;pwd=sa;database=northwind");
        SqlDataAdapter da = new SqlDataAdapter("select  lastname,ReportsTo from employees", conn);
        DataSet ds = new DataSet();
        da.Fill(ds);
        DataRow[] row = ds.Tables[0].Select();
        List<CascadingDropDownNameValue> values = new List<CascadingDropDownNameValue>();  //将值填充到dropdownlist控件中,这里的参数也不是可以改变的。
        foreach (DataRow dr in row)
        {


            values.Add(new CascadingDropDownNameValue(dr["lastname"].ToString().Trim(), dr["ReportsTo"].ToString().Trim()));  //这里添加一个text/value对
        }
        return values.ToArray();   //返回
    }
    [WebMethod]
    public CascadingDropDownNameValue[] xiaoleiList(string knownCategoryValues, string category)
    {
        StringDictionary kv = CascadingDropDown.ParseKnownCategoryValuesString(knownCategoryValues);//二级下拉列表,得取得一级的category的值,也就是当前选定的值。以下代码是判断上级列表的category值,存在或不是空的话把值赋给daleiid; dalei是一级CascadingDropDown设置的category属性名称 

        int daleiid;
        if (!kv.ContainsKey("dalei") || !Int32.TryParse(kv["dalei"], out daleiid))
        {
        return null;
        }

        SqlConnection conn = new SqlConnection("server=(local);uid=sa;pwd=sa;database=northwind");
        SqlDataAdapter da = new SqlDataAdapter("select  firstname,employeeid from employees where ReportsTo="+daleiid, conn);
        DataSet ds = new DataSet();
        da.Fill(ds);
        DataRow[] row = ds.Tables[0].Select();
        List<CascadingDropDownNameValue> values = new List<CascadingDropDownNameValue>();
        foreach (DataRow dr in row)
        {
            values.Add(new CascadingDropDownNameValue(dr["firstname"].ToString(), dr["employeeid"].ToString()));
        }
        return values.ToArray();
    }

效果图 :


   
 
 
————————————————————
技术日志 | 阅读 4046 次
文章评论,共0条
游客请输入验证码