(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/