AjaxControlToolKit 学习之:CascadingDropDown
1.CascadingDropDownNameValue:dropdownList的Text与Value 值对组 类
2.knownCategoryValues:上一级被选dropdownList的category与value 组成的字符串(数据库列名与值)
3.category:数据关联的key值(dropdownList选中项的Value)
4.ParseKnownCategoryValuesString(knownCategoryValues):将knownCategoryValues转换成tringDictionary类型
数据源为dataBase
<实例源码>
前台:
--------------------------------------------------------------------------------------------
webService部分
数据源为XML文档
webService 代码
2.knownCategoryValues:上一级被选dropdownList的category与value 组成的字符串(数据库列名与值)
3.category:数据关联的key值(dropdownList选中项的Value)
4.ParseKnownCategoryValuesString(knownCategoryValues):将knownCategoryValues转换成tringDictionary类型
数据源为dataBase
<实例源码>
前台:
所在区:<asp:DropDownList ID="quDrop" runat="server">
</asp:DropDownList><br />
街道:<asp:DropDownList ID="streetDrop" runat="server">
</asp:DropDownList><br />
大厦:<asp:DropDownList ID="houseDrop" runat="server">
</asp:DropDownList><br />
<ajaxToolkit:CascadingDropDown ID="CascadingDropDown1" runat="server" TargetControlID="quDrop"
ServiceMethod="getQu" ServicePath="GetDataService.asmx" Category ="House_Qu" LoadingText="loading" PromptText = "选择区">
</ajaxToolkit:CascadingDropDown>
<ajaxToolkit:CascadingDropDown ID="CascadingDropDown2" runat="server" TargetControlID="streetDrop"
ServiceMethod="getStreet" ServicePath="GetDataService.asmx" ParentControlID="quDrop" Category="House_Street" LoadingText="loading" PromptText ="选择街道" >
</ajaxToolkit:CascadingDropDown>
<ajaxToolkit:CascadingDropDown ID="CascadingDropDown3" runat="server" TargetControlID="houseDrop"
ServiceMethod="getHouseNm" ServicePath="GetDataService.asmx" ParentControlID="streetDrop" Category="House_Name" LoadingText="loading" PromptText="选择房子">
</ajaxToolkit:CascadingDropDown>
</asp:DropDownList><br />
街道:<asp:DropDownList ID="streetDrop" runat="server">
</asp:DropDownList><br />
大厦:<asp:DropDownList ID="houseDrop" runat="server">
</asp:DropDownList><br />
<ajaxToolkit:CascadingDropDown ID="CascadingDropDown1" runat="server" TargetControlID="quDrop"
ServiceMethod="getQu" ServicePath="GetDataService.asmx" Category ="House_Qu" LoadingText="loading" PromptText = "选择区">
</ajaxToolkit:CascadingDropDown>
<ajaxToolkit:CascadingDropDown ID="CascadingDropDown2" runat="server" TargetControlID="streetDrop"
ServiceMethod="getStreet" ServicePath="GetDataService.asmx" ParentControlID="quDrop" Category="House_Street" LoadingText="loading" PromptText ="选择街道" >
</ajaxToolkit:CascadingDropDown>
<ajaxToolkit:CascadingDropDown ID="CascadingDropDown3" runat="server" TargetControlID="houseDrop"
ServiceMethod="getHouseNm" ServicePath="GetDataService.asmx" ParentControlID="streetDrop" Category="House_Name" LoadingText="loading" PromptText="选择房子">
</ajaxToolkit:CascadingDropDown>
--------------------------------------------------------------------------------------------
webService部分
[System.Web.Script.Services.ScriptService]
public class GetDataService :WebService {
private static readonly string connStr = ConfigurationManager.AppSettings["sqlConnctionString"].ToString();
public GetDataService () {
//如果使用设计的组件,请取消注释以下行
//InitializeComponent();
}
[WebMethod]
public CascadingDropDownNameValue[] getQu(string knownCategoryValues, string category) //取得区
{
List<CascadingDropDownNameValue> nameValues = new List<CascadingDropDownNameValue>();
string sql = "select distinct(House_Qu) from Houses";
using (SqlConnection conn = new SqlConnection(connStr))
{
conn.Open();
SqlCommand comm = new SqlCommand(sql, conn);
SqlDataReader dr = comm.ExecuteReader();
while (dr.Read())
{
CascadingDropDownNameValue nameValue = new CascadingDropDownNameValue();
nameValue.name = dr.GetSqlString(0).ToString();
nameValue.value = dr.GetSqlString(0).ToString();
nameValues.Add(nameValue);
}
conn.Close();
}
return nameValues.ToArray();
}
[WebMethod]
public CascadingDropDownNameValue[] getStreet(string knownCategoryValues, string category) //取得街道名称
{
System.Collections.Specialized.StringDictionary kv = CascadingDropDown.ParseKnownCategoryValuesString(knownCategoryValues);
if (!kv.ContainsKey("House_Qu") || string.IsNullOrEmpty(kv["House_Qu"]))
{
return null;
}
List<CascadingDropDownNameValue> nameValues = new List<CascadingDropDownNameValue>();
string sql = "select distinct(House_Street) from Houses where House_Qu=@House_Qu";
using (SqlConnection conn = new SqlConnection(connStr))
{
conn.Open();
SqlCommand comm = new SqlCommand(sql, conn);
comm.Parameters.Add("@House_Qu", System.Data.SqlDbType.NVarChar).Value = kv["House_Qu"];
SqlDataReader dr = comm.ExecuteReader();
while (dr.Read())
{
CascadingDropDownNameValue nameValue = new CascadingDropDownNameValue();
nameValue.name = dr.GetSqlString(0).ToString();
nameValue.value = dr.GetSqlString(0).ToString();
nameValues.Add(nameValue);
}
conn.Close();
}
return nameValues.ToArray();
}
[WebMethod]
public CascadingDropDownNameValue[] getHouseNm(string knownCategoryValues, string category) //取得大厦名称
{
System.Collections.Specialized.StringDictionary kv = CascadingDropDown.ParseKnownCategoryValuesString(knownCategoryValues);
if (!kv.ContainsKey("House_Street") || string.IsNullOrEmpty(kv["House_Street"]))
{
return null;
}
List<CascadingDropDownNameValue> nameValues = new List<CascadingDropDownNameValue>();
string sql = "select distinct(House_Name) from Houses where House_Street=@House_Street";
using (SqlConnection conn = new SqlConnection(connStr))
{
conn.Open();
SqlCommand comm = new SqlCommand(sql, conn);
comm.Parameters.Add("@House_Street", System.Data.SqlDbType.NVarChar).Value = kv["House_Street"];
SqlDataReader dr = comm.ExecuteReader();
while (dr.Read())
{
CascadingDropDownNameValue nameValue = new CascadingDropDownNameValue();
nameValue.name = dr.GetSqlString(0).ToString();
nameValue.value = dr.GetSqlString(0).ToString();
nameValues.Add(nameValue);
}
conn.Close();
}
return nameValues.ToArray();
}
}
public class GetDataService :WebService {
private static readonly string connStr = ConfigurationManager.AppSettings["sqlConnctionString"].ToString();
public GetDataService () {
//如果使用设计的组件,请取消注释以下行
//InitializeComponent();
}
[WebMethod]
public CascadingDropDownNameValue[] getQu(string knownCategoryValues, string category) //取得区
{
List<CascadingDropDownNameValue> nameValues = new List<CascadingDropDownNameValue>();
string sql = "select distinct(House_Qu) from Houses";
using (SqlConnection conn = new SqlConnection(connStr))
{
conn.Open();
SqlCommand comm = new SqlCommand(sql, conn);
SqlDataReader dr = comm.ExecuteReader();
while (dr.Read())
{
CascadingDropDownNameValue nameValue = new CascadingDropDownNameValue();
nameValue.name = dr.GetSqlString(0).ToString();
nameValue.value = dr.GetSqlString(0).ToString();
nameValues.Add(nameValue);
}
conn.Close();
}
return nameValues.ToArray();
}
[WebMethod]
public CascadingDropDownNameValue[] getStreet(string knownCategoryValues, string category) //取得街道名称
{
System.Collections.Specialized.StringDictionary kv = CascadingDropDown.ParseKnownCategoryValuesString(knownCategoryValues);
if (!kv.ContainsKey("House_Qu") || string.IsNullOrEmpty(kv["House_Qu"]))
{
return null;
}
List<CascadingDropDownNameValue> nameValues = new List<CascadingDropDownNameValue>();
string sql = "select distinct(House_Street) from Houses where House_Qu=@House_Qu";
using (SqlConnection conn = new SqlConnection(connStr))
{
conn.Open();
SqlCommand comm = new SqlCommand(sql, conn);
comm.Parameters.Add("@House_Qu", System.Data.SqlDbType.NVarChar).Value = kv["House_Qu"];
SqlDataReader dr = comm.ExecuteReader();
while (dr.Read())
{
CascadingDropDownNameValue nameValue = new CascadingDropDownNameValue();
nameValue.name = dr.GetSqlString(0).ToString();
nameValue.value = dr.GetSqlString(0).ToString();
nameValues.Add(nameValue);
}
conn.Close();
}
return nameValues.ToArray();
}
[WebMethod]
public CascadingDropDownNameValue[] getHouseNm(string knownCategoryValues, string category) //取得大厦名称
{
System.Collections.Specialized.StringDictionary kv = CascadingDropDown.ParseKnownCategoryValuesString(knownCategoryValues);
if (!kv.ContainsKey("House_Street") || string.IsNullOrEmpty(kv["House_Street"]))
{
return null;
}
List<CascadingDropDownNameValue> nameValues = new List<CascadingDropDownNameValue>();
string sql = "select distinct(House_Name) from Houses where House_Street=@House_Street";
using (SqlConnection conn = new SqlConnection(connStr))
{
conn.Open();
SqlCommand comm = new SqlCommand(sql, conn);
comm.Parameters.Add("@House_Street", System.Data.SqlDbType.NVarChar).Value = kv["House_Street"];
SqlDataReader dr = comm.ExecuteReader();
while (dr.Read())
{
CascadingDropDownNameValue nameValue = new CascadingDropDownNameValue();
nameValue.name = dr.GetSqlString(0).ToString();
nameValue.value = dr.GetSqlString(0).ToString();
nameValues.Add(nameValue);
}
conn.Close();
}
return nameValues.ToArray();
}
}
数据源为XML文档
webService 代码
using System;
using System.Collections.Specialized;
using System.Web;
using System.Web.Services;
using System.Xml;
/// <summary>
///
/// </summary>
[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[System.Web.Script.Services.ScriptService]
public class CarsService : WebService
{
private static XmlDocument _document;
private static object _lock = new object();
// XMLDOM 实例
public static XmlDocument Document
{
get
{
lock (_lock)
{
if (_document == null)
{
//
_document = new XmlDocument();
_document.Load(HttpContext.Current.Server.MapPath("~/App_Data/CarsService.xml"));
}
}
return _document;
}
}
public static string[] Hierarchy
{
get { return new string[] { "make", "model" }; }
}
/// <summary>
/// </summary>
public CarsService()
{
}
/// <summary>
///
///
[WebMethod]
public AjaxControlToolkit.CascadingDropDownNameValue[] GetDropDownContents(string knownCategoryValues, string category)
{
StringDictionary knownCategoryValuesDictionary = AjaxControlToolkit.CascadingDropDown.ParseKnownCategoryValuesString(knownCategoryValues);
return AjaxControlToolkit.CascadingDropDown.QuerySimpleCascadingDropDownDocument(Document, Hierarchy, knownCategoryValuesDictionary, category);
}
}
xml 文件using System.Collections.Specialized;
using System.Web;
using System.Web.Services;
using System.Xml;
/// <summary>
///
/// </summary>
[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[System.Web.Script.Services.ScriptService]
public class CarsService : WebService
{
private static XmlDocument _document;
private static object _lock = new object();
// XMLDOM 实例
public static XmlDocument Document
{
get
{
lock (_lock)
{
if (_document == null)
{
//
_document = new XmlDocument();
_document.Load(HttpContext.Current.Server.MapPath("~/App_Data/CarsService.xml"));
}
}
return _document;
}
}
public static string[] Hierarchy
{
get { return new string[] { "make", "model" }; }
}
/// <summary>
/// </summary>
public CarsService()
{
}
/// <summary>
///
///
[WebMethod]
public AjaxControlToolkit.CascadingDropDownNameValue[] GetDropDownContents(string knownCategoryValues, string category)
{
StringDictionary knownCategoryValuesDictionary = AjaxControlToolkit.CascadingDropDown.ParseKnownCategoryValuesString(knownCategoryValues);
return AjaxControlToolkit.CascadingDropDown.QuerySimpleCascadingDropDownDocument(Document, Hierarchy, knownCategoryValuesDictionary, category);
}
}
<?xml version="1.0" encoding="utf-8" ?>
<CarsService>
<make name="Acura">
<model name="Integra">
<color name="Green" />
<color name="Sea Green" />
<color name="Pale Green" />
</model>
<model name="RL">
<color name="Red" />
<color name="Bright Red" />
</model>
<model name="TL">
<color name="Teal" />
<color name="Dark Teal" />
</model>
</make>
<make name="Audi" value="Audi (value)">
<model name="A4" value="A4 (value)">
<color name="Azure" value="Azure (value)" />
<color name="Light Azure" value="Light Azure (value)" />
<color name="Dark Azure" value="Dark Azure (value)" />
</model>
<model name="S4" value="S4 (value)">
<color name="Silver" value="Silver (value)" />
<color name="Metallic" value="Metallic (value)" />
</model>
<model name="A6" value="A6 (value)">
<color name="Cyan" value="Cyan (value)" />
</model>
</make>
<make name="BMW" value="BMW (value)">
<model name="3 series" value="3 series (value)">
<color name="Blue" value="Blue (value)" />
<color name="Sky Blue" value="Sky Blue (value)" />
<color name="Racing Blue" value="Racing Blue (value)" />
</model>
<model name="5 series" value="5 series (value)">
<color name="Yellow" value="Yellow (value)" />
<color name="Banana" value="Banana (value)" />
</model>
<model name="7 series" value="7 series (value)">
<color name="Brown" value="Brown (value)" />
</model>
</make>
</CarsService>
<CarsService>
<make name="Acura">
<model name="Integra">
<color name="Green" />
<color name="Sea Green" />
<color name="Pale Green" />
</model>
<model name="RL">
<color name="Red" />
<color name="Bright Red" />
</model>
<model name="TL">
<color name="Teal" />
<color name="Dark Teal" />
</model>
</make>
<make name="Audi" value="Audi (value)">
<model name="A4" value="A4 (value)">
<color name="Azure" value="Azure (value)" />
<color name="Light Azure" value="Light Azure (value)" />
<color name="Dark Azure" value="Dark Azure (value)" />
</model>
<model name="S4" value="S4 (value)">
<color name="Silver" value="Silver (value)" />
<color name="Metallic" value="Metallic (value)" />
</model>
<model name="A6" value="A6 (value)">
<color name="Cyan" value="Cyan (value)" />
</model>
</make>
<make name="BMW" value="BMW (value)">
<model name="3 series" value="3 series (value)">
<color name="Blue" value="Blue (value)" />
<color name="Sky Blue" value="Sky Blue (value)" />
<color name="Racing Blue" value="Racing Blue (value)" />
</model>
<model name="5 series" value="5 series (value)">
<color name="Yellow" value="Yellow (value)" />
<color name="Banana" value="Banana (value)" />
</model>
<model name="7 series" value="7 series (value)">
<color name="Brown" value="Brown (value)" />
</model>
</make>
</CarsService>