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

(1).网页部分

<tr>

        <tdvalign="top"style="WIDTH:86px;height:31px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;段:</td>

        <tdstyle="height:31px">

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

            Width="128px" 

            >

           </asp:DropDownList>

           </td>

    </tr>

    

    <tr>

        <tdvalign="top"style="WIDTH:86px;height:31px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;级:</td>

        <tdstyle="height:31px">

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

           </asp:DropDownList>

           </td>

    </tr>

    

 <tr>

        <tdvalign="top"style="WIDTH:86px;height:31px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;程:</td>

        <tdstyle="height:31px">

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

           </asp:DropDownList>

           </td>

    </tr>

     <tr>

        <tdvalign="top"style="WIDTH:86px;height:31px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;点:</td>

        <tdstyle="height:31px">

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

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

           </td>

    </tr>

    

 

 

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

       <ajaxToolkit:CascadingDropDownID="CascadingDropDown1"runat="server"

                                      TargetControlID="ddlb_xd"

                                      Category="Xd"

                                      PromptText="请选择学段"

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

                                      ServicePath="GetXD_Grade.asmx"

                                      ServiceMethod="Getxd"

                                       >

       </ajaxToolkit:CascadingDropDown>

       

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

       <ajaxToolkit:CascadingDropDownID="CascadingDropDown2"runat="server"

                                      TargetControlID="ddlb_Grade"

                                      ParentControlID="ddlb_xd"

                                      Category="Grade"

                                      PromptText="请选择年级"

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

                                      ServicePath="GetXD_Grade.asmx"

                                      ServiceMethod="GetGradeByXdID">

       </ajaxToolkit:CascadingDropDown>

       

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

       <ajaxToolkit:CascadingDropDownID="CascadingDropDown3"runat="server"

                                      TargetControlID="ddlb_CouseType"

                                      ParentControlID="ddlb_Grade"

                                      Category="Course"

                                      PromptText="请选择课程"

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

                                      ServicePath="GetXD_Grade.asmx"

                                      ServiceMethod="GetCourseByGradeID">

       </ajaxToolkit:CascadingDropDown>

       

 

 

 

(2).Web服务的代码

usingSystem;

usingSystem.Web;

usingSystem.Collections;

usingSystem.Web.Services;

usingSystem.Web.Services.Protocols;

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

usingSystem.Data;

usingSystem.Data.SqlClient;

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

usingSystem.Web.Configuration;

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

usingSystem.Web.Script.Services;

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

usingAjaxControlToolkit;

usingSystem.Collections.Generic;

usingSystem.Collections.Specialized;

usingQZH.EAF.SORM;

 

 

 

 

///<summary>

///GetXD_Grade的摘要说明

///

///</summary>

///

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

// [ScriptService()]

 

[ScriptService()]

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

[WebServiceBinding(ConformsTo =WsiProfiles.BasicProfile1_1)]

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

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

publicclassGetXD_Grade: System.Web.Services.WebService{

 

   publicGetXD_Grade () {

 

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

       //InitializeComponent();

   }

 

 

 

   

 

   ///<summary>

   ///得到学段的列表

   ///</summary>

   ///<param name="knownCategoryValues"></param>

   ///<param name="category"></param>

   ///<returns></returns>

   [WebMethod]

   publicCascadingDropDownNameValue[] Getxd(

       stringknownCategoryValues,

       stringcategory)

   {

       //声明CascadingDropDownNameValue数组。

       List<CascadingDropDownNameValue> values =

           newList<CascadingDropDownNameValue>();

 

       DataTabledt =newDataTable();

       stringsql ="SELECT id,name FROM t_xd";

       dt =SessionHL.SelectDataTable(sql);

 

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

       {

           values.Add(newCascadingDropDownNameValue(

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

       }

 

       returnvalues.ToArray();

   }

 

   

 

 

 

 

 

   ///<summary>

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

   ///

   ///</summary>

   ///<param name="knownCategoryValues"></param>

   ///<param name="category"></param>

   ///<returns></returns>

   [WebMethod]

   publicCascadingDropDownNameValue[] GetGradeByXdID(

       stringknownCategoryValues,

       stringcategory)

   {

       StringDictionarykcv =CascadingDropDown.

           ParseKnownCategoryValuesString(knownCategoryValues);

 

       //是否包含 学段 的值。

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

           returnnull;

 

       //声明CascadingDropDownNameValue数组。

       List<CascadingDropDownNameValue> values =

           newList<CascadingDropDownNameValue>();

 

       DataTabledt =newDataTable();

       SqlCommandSQLCmd =newSqlCommand();

       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(inti = 0; i < dt.Rows.Count; i++)

       {

           values.Add(newCascadingDropDownNameValue(

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

       }

       returnvalues.ToArray();

   }

 

 

 

 

 

 

 

 

   ///<summary>

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

   ///

   ///</summary>

   ///<param name="knownCategoryValues"></param>

   ///<param name="category"></param>

   ///<returns></returns>

   [WebMethod]

   publicCascadingDropDownNameValue[] GetCourseByGradeID(

       stringknownCategoryValues,

       stringcategory)

   {

       StringDictionarykcv =CascadingDropDown.

           ParseKnownCategoryValuesString(knownCategoryValues);

 

       //是否包含 年级 的值。

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

           returnnull;

 

       //声明CascadingDropDownNameValue数组。

       List<CascadingDropDownNameValue> values =

           newList<CascadingDropDownNameValue>();

 

       DataTabledt =newDataTable();

       SqlCommandSQLCmd =newSqlCommand();

       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(inti = 0; i < dt.Rows.Count; i++)

       {

           values.Add(newCascadingDropDownNameValue(

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

       }

       returnvalues.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服务得到的值

posted @ 2009-05-06 17:11  Devil_Zhang  阅读(281)  评论(0编辑  收藏  举报