Ajax CascadingDropDown控件实现级联下拉列表选择

(1).网页部分

<tr>

         <td valign="top" style="WIDTH: 86px; height: 31px;">        段:td>

         <td style="height: 31px" >

            <asp:DropDownList ID="ddlb_xd" runat="server" DataTextField="name" DataValueField="id"                                         

             Width="128px" 

             >

            asp:DropDownList>

            td>

     tr>

    

     <tr>

         <td valign="top" style="WIDTH: 86px; height: 31px;">        级:td>

         <td style="height: 31px" >

            <asp:DropDownList ID="ddlb_Grade" runat="server" DataTextField="name" DataValueField="id" Width="128px">

            asp:DropDownList>

            td>

     tr>

    

  <tr>

         <td valign="top" style="WIDTH: 86px; height: 31px;">        程:td>

         <td style="height: 31px" >

            <asp:DropDownList ID="ddlb_CouseType" runat="server" DataTextField="name" DataValueField="id" Width="128px">

            asp:DropDownList>

            td>

     tr>

      <tr>

         <td valign="top" style="WIDTH: 86px; height: 31px;">        点:td>

         <td style="height: 31px" >

            <asp:DropDownList ID="ddlb_NeedMoney" runat="server" DataTextField="MoneyText" DataValueField="MoneyValue" Width="128px">

            asp:DropDownList> <font style="color: #FF0000"  >(扣点为0元的试题为免费试题)font>

            td>

     tr>

    

 

 

     -- 1 层的下拉选单 --%>

        <ajaxToolkit:CascadingDropDown ID="CascadingDropDown1" runat="server"

                                       TargetControlID="ddlb_xd"

                                       Category="Xd"

                                       PromptText="请选择学段"

                                       LoadingText="读取学段数据中..."

                                       ServicePath="GetXD_Grade.asmx"

                                       ServiceMethod="Getxd"

                                        >

        ajaxToolkit:CascadingDropDown>

       

        -- 2 层的下拉选单 --%>

        <ajaxToolkit:CascadingDropDown ID="CascadingDropDown2" runat="server"

                                       TargetControlID="ddlb_Grade"

                                       ParentControlID="ddlb_xd"

                                       Category="Grade"

                                       PromptText="请选择年级"

                                       LoadingText="读取年级数据中..."

                                       ServicePath="GetXD_Grade.asmx"

                                       ServiceMethod="GetGradeByXdID">

        ajaxToolkit:CascadingDropDown>

       

        -- 3 层的下拉选单 --%>

        <ajaxToolkit:CascadingDropDown ID="CascadingDropDown3" runat="server"

                                       TargetControlID="ddlb_CouseType"

                                       ParentControlID="ddlb_Grade"

                                       Category="Course"

                                       PromptText="请选择课程"

                                       LoadingText="读取课程数据中..."

                                       ServicePath="GetXD_Grade.asmx"

                                       ServiceMethod="GetCourseByGradeID">

        ajaxToolkit:CascadingDropDown>

        

 

 

 

(2).Web服务的代码

using System;

using System.Web;

using System.Collections;

using System.Web.Services;

using System.Web.Services.Protocols;

// 存取数据库所需之命名空间。

using System.Data;

using System.Data.SqlClient;

// 存取 Web.config 所需之命名空间。

using System.Web.Configuration;

// 导入 ScriptServiceAttribute 类别所需的命名空间。

using System.Web.Script.Services;

// 返回 CascadingDropDownNameValue 数组所需之命名空间。

using AjaxControlToolkit;

using System.Collections.Generic;

using System.Collections.Specialized;

using QZH.EAF.SORM;

 

 

 

 

///

///GetXD_Grade 的摘要说明

///

///

///

/// // 请在 Public Class 之前加入如下的声明,这是关键的地方:

// [ScriptService()]

 

[ScriptService()]

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

[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]

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

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

public class GetXD_Grade : System.Web.Services.WebService {

 

    public GetXD_Grade () {

 

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

        //InitializeComponent();

    }

 

 

 

   

 

    ///

    /// 得到学段的列表

    ///

    ///

    ///

    ///

    [WebMethod]

    public CascadingDropDownNameValue[] Getxd(

        string knownCategoryValues,

        string category)

    {

        // 声明 CascadingDropDownNameValue 数组。

        List<CascadingDropDownNameValue> values =

            new List<CascadingDropDownNameValue>();

 

        DataTable dt = new DataTable();

        string sql = "SELECT id,name FROM t_xd";

        dt =SessionHL.SelectDataTable(sql);

 

        for (int i = 0; i < dt.Rows.Count; i++)

        {

            values.Add(new CascadingDropDownNameValue(

                                dt.Rows[i]["name"].ToString(),dt.Rows[i]["id"].ToString())); //第一个参数是名称,第二个参数是值

        }

 

        return values.ToArray();

    }

 

   

 

 

 

 

 

    ///

    /// 得到相应学段的年级列表

    ///

    ///

    ///

    ///

    ///

    [WebMethod]

    public CascadingDropDownNameValue[] GetGradeByXdID(

        string knownCategoryValues,

        string category)

    {

        StringDictionary kcv = CascadingDropDown.

            ParseKnownCategoryValuesString(knownCategoryValues);

 

        // 是否包含 学段 的值。

        if (!kcv.ContainsKey("Xd"))

            return null;

 

        // 声明 CascadingDropDownNameValue 数组。

        List<CascadingDropDownNameValue> values =

            new List<CascadingDropDownNameValue>();

 

        DataTable dt = new DataTable();

        SqlCommand SQLCmd = new SqlCommand();

        SQLCmd.CommandText = "Select id,name from t_Grade where XdID=@XdID";

        SQLCmd.Parameters.Add("@XdID", SqlDbType.NVarChar).Value = kcv["Xd"];

        dt = SessionHL.SelectDataTable(SQLCmd);

 

        for (int i = 0; i < dt.Rows.Count; i++)

        {

            values.Add(new CascadingDropDownNameValue(

                                dt.Rows[i]["name"].ToString(), dt.Rows[i]["id"].ToString())); //第一个参数是名称,第二个参数是值

        }

        return values.ToArray();

    }

 

 

 

 

 

 

 

 

    ///

    /// 根据年级得到科目列表

    ///

    ///

    ///

    ///

    ///

    [WebMethod]

    public CascadingDropDownNameValue[] GetCourseByGradeID(

        string knownCategoryValues,

        string category)

    {

        StringDictionary kcv = CascadingDropDown.

            ParseKnownCategoryValuesString(knownCategoryValues);

 

        // 是否包含 年级 的值。

        if (!kcv.ContainsKey("Grade"))

            return null;

 

        // 声明 CascadingDropDownNameValue 数组。

        List<CascadingDropDownNameValue> values =

            new List<CascadingDropDownNameValue>();

 

        DataTable dt = new DataTable();

        SqlCommand SQLCmd = new SqlCommand();

        SQLCmd.CommandText = "Select id,name from t_course where GradeID=@GradeID ";

 

        SQLCmd.Parameters.Add("@GradeID", SqlDbType.NVarChar).Value = kcv["Grade"];

 

        dt = SessionHL.SelectDataTable(SQLCmd);

 

        for (int i = 0; i < dt.Rows.Count; i++)

        {

            values.Add(new CascadingDropDownNameValue(

                                dt.Rows[i]["name"].ToString(), dt.Rows[i]["id"].ToString())); //第一个参数是名称,第二个参数是值

        }

        return values.ToArray();

    }

 

 

 

 

 

   

}

 

 

(3) 在网页中取值时,验证为空否

        //===================数据验证=================

        //学段选项验证

        if (ddlb_xd.SelectedItem.Text == "")

        {

            PublicFun.MessageBox("请选择学段!", this);

            return;

        }

        //年级选项验证

        if (ddlb_Grade.SelectedItem.Text == "")

        {

            PublicFun.MessageBox("请选择年级!", this);

            return;

        }

        //年级选项验证

        if (this.ddlb_CouseType.SelectedItem.Text == "")

        {

            PublicFun.MessageBox("请选择课程!", this);

            return;

        }

 

 

 

不必再特意绑定级联下拉列表中的值了,因为是选择时通过WEB服务得到的值

 

 

 

 

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/21134438/viewspace-592637/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/21134438/viewspace-592637/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值