主要通过使用UpdatePanel这个控件来实现该功能
一个省、市、县的XML文件:
在要处理的ASPX页面中加入如下代码:
和
在aspx.cs文件中加入
AreaXmlHelper.cs
一个省、市、县的XML文件:
CODE:
<?xml version="1.0" encoding="gb2312"?>
<Country>
<Item id="1" pid="0" c="1">北京</Item>
<Item id="2" pid="0" c="2">上海</Item>
<Item id="3" pid="0" c="3">深圳</Item>
<Item id="4" pid="0" c="4">山西</Item>
<Item id="5" pid="0" c="5">内蒙古</Item>
<Item id="6" pid="0" c="6">辽宁</Item>
<Item id="7" pid="0" c="7">吉林</Item>
<Item id="8" pid="0" c="8">黑龙江</Item>
<Item id="9" pid="0" c="9">江苏 </Item>
<Item id="10" pid="0" c="10">浙江 </Item>
<Item id="11" pid="0" c="11">安徽</Item>
<Item id="12" pid="0" c="12">福建</Item>
<Item id="13" pid="0" c="13">江西</Item>
<Item id="14" pid="0" c="14">山东 </Item>
<Item id="15" pid="0" c="15">河南</Item>
<Item id="16" pid="0" c="16">湖北</Item>
<Item id="17" pid="0" c="17">湖南 </Item>
<Item id="18" pid="0" c="18">广东</Item>
<Item id="19" pid="0" c="19">广西</Item>
<Item id="20" pid="0" c="20">海南</Item>
<Item id="21" pid="0" c="21">重庆</Item>
<Item id="22" pid="0" c="22">四川</Item>
<Item id="23" pid="0" c="23">贵州</Item>
<Item id="24" pid="0" c="24">云南 </Item>
<Item id="25" pid="0" c="25">西藏</Item>
<Item id="26" pid="0" c="26">陕西</Item>
<Item id="27" pid="0" c="27">甘肃 </Item>
<Item id="28" pid="0" c="28">青海</Item>
<Item id="29" pid="0" c="29">宁夏</Item>
<Item id="30" pid="0" c="30">新疆</Item>
<Item id="31" pid="0" c="31">台湾</Ite>
<Item id="32" pid="0" c="32">澳门</Item>
<Item id="33" pid="0" c="33">香港</Item>
<Item id="34" pid="24" c="34">迪庆藏族自治州</Item>
<Item id="35" pid="34" c="35">维西傈族自治县</Item>
<Item id="36" pid="34" c="36">德钦县</Item>
</Country>
<Country>
<Item id="1" pid="0" c="1">北京</Item>
<Item id="2" pid="0" c="2">上海</Item>
<Item id="3" pid="0" c="3">深圳</Item>
<Item id="4" pid="0" c="4">山西</Item>
<Item id="5" pid="0" c="5">内蒙古</Item>
<Item id="6" pid="0" c="6">辽宁</Item>
<Item id="7" pid="0" c="7">吉林</Item>
<Item id="8" pid="0" c="8">黑龙江</Item>
<Item id="9" pid="0" c="9">江苏 </Item>
<Item id="10" pid="0" c="10">浙江 </Item>
<Item id="11" pid="0" c="11">安徽</Item>
<Item id="12" pid="0" c="12">福建</Item>
<Item id="13" pid="0" c="13">江西</Item>
<Item id="14" pid="0" c="14">山东 </Item>
<Item id="15" pid="0" c="15">河南</Item>
<Item id="16" pid="0" c="16">湖北</Item>
<Item id="17" pid="0" c="17">湖南 </Item>
<Item id="18" pid="0" c="18">广东</Item>
<Item id="19" pid="0" c="19">广西</Item>
<Item id="20" pid="0" c="20">海南</Item>
<Item id="21" pid="0" c="21">重庆</Item>
<Item id="22" pid="0" c="22">四川</Item>
<Item id="23" pid="0" c="23">贵州</Item>
<Item id="24" pid="0" c="24">云南 </Item>
<Item id="25" pid="0" c="25">西藏</Item>
<Item id="26" pid="0" c="26">陕西</Item>
<Item id="27" pid="0" c="27">甘肃 </Item>
<Item id="28" pid="0" c="28">青海</Item>
<Item id="29" pid="0" c="29">宁夏</Item>
<Item id="30" pid="0" c="30">新疆</Item>
<Item id="31" pid="0" c="31">台湾</Ite>
<Item id="32" pid="0" c="32">澳门</Item>
<Item id="33" pid="0" c="33">香港</Item>
<Item id="34" pid="24" c="34">迪庆藏族自治州</Item>
<Item id="35" pid="34" c="35">维西傈族自治县</Item>
<Item id="36" pid="34" c="36">德钦县</Item>
</Country>
在要处理的ASPX页面中加入如下代码:
CODE:
<body>
<form id="Form1" runat="server">
<asp:ScriptManager ID="styleScriptManager" runat="server"></asp:ScriptManager>
<form id="Form1" runat="server">
<asp:ScriptManager ID="styleScriptManager" runat="server"></asp:ScriptManager>
和
CODE:
<div class="divTr">
<div class="td_title">所在区域:</div>
<div class="td_value">
<asp:UpdatePanel ID="updatePanel2" runat="server" UpdateMode="conditional">
<Triggers>
<asp:AsyncPostBackTrigger ControlID="Btn_SaveBlogInfo" EventName="Click" />
</Triggers>
<ContentTemplate>
<asp:DropDownList ID="Dp_Providence" runat="server" ToolTip="选择省份" OnSelectedIndexChanged="Dp_Providence_OnSelectedIndexChanged"
AutoPostBack="true">
</asp:DropDownList>
<asp:DropDownList ID="Dp_City" runat="server" ToolTip="选择省份">
<asp:ListItem Value="" Text="=请选择="></asp:ListItem>
</asp:DropDownList>
</ContentTemplate>
</asp:UpdatePanel>
</div>
</div>
<div class="td_title">所在区域:</div>
<div class="td_value">
<asp:UpdatePanel ID="updatePanel2" runat="server" UpdateMode="conditional">
<Triggers>
<asp:AsyncPostBackTrigger ControlID="Btn_SaveBlogInfo" EventName="Click" />
</Triggers>
<ContentTemplate>
<asp:DropDownList ID="Dp_Providence" runat="server" ToolTip="选择省份" OnSelectedIndexChanged="Dp_Providence_OnSelectedIndexChanged"
AutoPostBack="true">
</asp:DropDownList>
<asp:DropDownList ID="Dp_City" runat="server" ToolTip="选择省份">
<asp:ListItem Value="" Text="=请选择="></asp:ListItem>
</asp:DropDownList>
</ContentTemplate>
</asp:UpdatePanel>
</div>
</div>
在aspx.cs文件中加入
CODE:
/// <summary>
/// 省份下拉对象更改值事件
/// </summary>
/// <remarks>查找属于该省份下的所有城市</remarks>
protected void Dp_Providence_OnSelectedIndexChanged(object sender, EventArgs e)
{
int selectIndex = this.Dp_Providence.SelectedIndex;
if (selectIndex != -1)
{
string provinceId = this.Dp_Providence.SelectedItem.Value;
BindCityToDropDownList(provinceId);
}
}
/// <summary>
/// 绑定省份到Dp_Providence用户控件中
/// </summary>
private void BindProvinceToDropDownList()
{
BindCollectionToDropDownList(Dp_Providence, AreaXmlHelper.Province());
}
/// <summary>
/// 绑定列出来的省份所包含的所有城市
/// </summary>
/// <param name="provinceId">目标省份ID号</param>
private void BindCityToDropDownList(string provinceId)
{
System.Collections.Specialized.HybridDictionary resultDictionary = AreaXmlHelper.City(provinceId);
if (resultDictionary.Count > 0)
{
BindCollectionToDropDownList(Dp_City, resultDictionary);
}
}
/// <summary>
/// 绑定字典集合数据到目标DropDownList用户控件上
/// </summary>
/// <param name="dropDownList">目标DrowDownList用户控件</param>
/// <param name="dictionary">字典集合数据</param>
private void BindCollectionToDropDownList(DropDownList dropDownList, System.Collections.Specialized.HybridDictionary dictionary)
{
if (dropDownList != null)
{
dropDownList.DataSource = dictionary;
dropDownList.DataTextField = "value";
dropDownList.DataValueField = "key";
dropDownList.DataBind();
}
}
/// 省份下拉对象更改值事件
/// </summary>
/// <remarks>查找属于该省份下的所有城市</remarks>
protected void Dp_Providence_OnSelectedIndexChanged(object sender, EventArgs e)
{
int selectIndex = this.Dp_Providence.SelectedIndex;
if (selectIndex != -1)
{
string provinceId = this.Dp_Providence.SelectedItem.Value;
BindCityToDropDownList(provinceId);
}
}
/// <summary>
/// 绑定省份到Dp_Providence用户控件中
/// </summary>
private void BindProvinceToDropDownList()
{
BindCollectionToDropDownList(Dp_Providence, AreaXmlHelper.Province());
}
/// <summary>
/// 绑定列出来的省份所包含的所有城市
/// </summary>
/// <param name="provinceId">目标省份ID号</param>
private void BindCityToDropDownList(string provinceId)
{
System.Collections.Specialized.HybridDictionary resultDictionary = AreaXmlHelper.City(provinceId);
if (resultDictionary.Count > 0)
{
BindCollectionToDropDownList(Dp_City, resultDictionary);
}
}
/// <summary>
/// 绑定字典集合数据到目标DropDownList用户控件上
/// </summary>
/// <param name="dropDownList">目标DrowDownList用户控件</param>
/// <param name="dictionary">字典集合数据</param>
private void BindCollectionToDropDownList(DropDownList dropDownList, System.Collections.Specialized.HybridDictionary dictionary)
{
if (dropDownList != null)
{
dropDownList.DataSource = dictionary;
dropDownList.DataTextField = "value";
dropDownList.DataValueField = "key";
dropDownList.DataBind();
}
}
AreaXmlHelper.cs
CODE:
using System;
using System.Xml;
using System.IO;
using System.Collections.Specialized;
/// <summary>
/// AreaXmlHelper 的摘要说明
/// </summary>
public sealed class AreaXmlHelper
{
/// <summary>
/// 获取省份列表
/// </summary>
/// <returns>返回省份列表</returns>
public static HybridDictionary Province()
{
return Province("");
}
/// <summary>
/// 获取省份列表
/// </summary>
/// <param name="xmlFilePath">存放地区信息的XML文件路径</param>
/// <returns>返回省份列表</returns>
public static HybridDictionary Province(string xmlFilePath)
{
return EnumerateAreaList(xmlFilePath, "");
}
/// <summary>
/// 获取目标省份所对应的城市列表
/// </summary>
/// <param name="provinceId">目标省份城市代码号</param>
/// <returns>返回目标省份所对应的城市列表</returns>
public static HybridDictionary City(string provinceId)
{
return City("", provinceId);
}
/// <summary>
/// 获取目标省份所对应的城市列表
/// </summary>
/// <param name="xmlFilePath">存放地区信息的XML文件路径</param>
/// <param name="provinceId">目标省份城市代码号</param>
/// <returns>返回目标省份所对应的城市列表</returns>
public static HybridDictionary City(string xmlFilePath, string provinceId)
{
return EnumerateAreaList(xmlFilePath, provinceId);
}
/// <summary>
/// 遍历所有的符合条件的地区信息列表
/// </summary>
/// <param name="xmlFilePath">存放地区信息的XML文件路径</param>
/// <param name="areaId">目标地区代码号</param>
/// <returns>返回遍历所有的符合条件的地区信息列表</returns>
private static HybridDictionary EnumerateAreaList(string xmlFilePath, string areaId)
{
if (string.IsNullOrEmpty(xmlFilePath))
{
xmlFilePath = skzx.Core.PageCtrl.Request.ApplicationPath + "/AreaList.xml";
}
string phyXmlPath = skzx.Core.PageCtrl.Server.MapPath(xmlFilePath);
if (string.IsNullOrEmpty(areaId)) areaId = "0";
HybridDictionary provinceDictionary = new HybridDictionary(true);
provinceDictionary.Clear();
if (File.Exists(phyXmlPath))
{
try
{
XmlTextReader reader = new XmlTextReader(phyXmlPath);
XmlDocument doc = new XmlDocument();
doc.Load(reader);
XmlElement root = doc.DocumentElement;
string xpath = string.Format("Item[@pid={0}]", areaId);
XmlNodeList list = root.SelectNodes(xpath);
foreach (XmlElement element in list)
if (!provinceDictionary.Contains(element.GetAttribute("id")))
provinceDictionary.Add(element.GetAttribute("id"), element.InnerText); //key = code, value = text
reader.Close();
}
catch (Exception ex)
{
Console.WriteLine(ex.InnerException.Message);
}
}
return provinceDictionary;
}
}
using System.Xml;
using System.IO;
using System.Collections.Specialized;
/// <summary>
/// AreaXmlHelper 的摘要说明
/// </summary>
public sealed class AreaXmlHelper
{
/// <summary>
/// 获取省份列表
/// </summary>
/// <returns>返回省份列表</returns>
public static HybridDictionary Province()
{
return Province("");
}
/// <summary>
/// 获取省份列表
/// </summary>
/// <param name="xmlFilePath">存放地区信息的XML文件路径</param>
/// <returns>返回省份列表</returns>
public static HybridDictionary Province(string xmlFilePath)
{
return EnumerateAreaList(xmlFilePath, "");
}
/// <summary>
/// 获取目标省份所对应的城市列表
/// </summary>
/// <param name="provinceId">目标省份城市代码号</param>
/// <returns>返回目标省份所对应的城市列表</returns>
public static HybridDictionary City(string provinceId)
{
return City("", provinceId);
}
/// <summary>
/// 获取目标省份所对应的城市列表
/// </summary>
/// <param name="xmlFilePath">存放地区信息的XML文件路径</param>
/// <param name="provinceId">目标省份城市代码号</param>
/// <returns>返回目标省份所对应的城市列表</returns>
public static HybridDictionary City(string xmlFilePath, string provinceId)
{
return EnumerateAreaList(xmlFilePath, provinceId);
}
/// <summary>
/// 遍历所有的符合条件的地区信息列表
/// </summary>
/// <param name="xmlFilePath">存放地区信息的XML文件路径</param>
/// <param name="areaId">目标地区代码号</param>
/// <returns>返回遍历所有的符合条件的地区信息列表</returns>
private static HybridDictionary EnumerateAreaList(string xmlFilePath, string areaId)
{
if (string.IsNullOrEmpty(xmlFilePath))
{
xmlFilePath = skzx.Core.PageCtrl.Request.ApplicationPath + "/AreaList.xml";
}
string phyXmlPath = skzx.Core.PageCtrl.Server.MapPath(xmlFilePath);
if (string.IsNullOrEmpty(areaId)) areaId = "0";
HybridDictionary provinceDictionary = new HybridDictionary(true);
provinceDictionary.Clear();
if (File.Exists(phyXmlPath))
{
try
{
XmlTextReader reader = new XmlTextReader(phyXmlPath);
XmlDocument doc = new XmlDocument();
doc.Load(reader);
XmlElement root = doc.DocumentElement;
string xpath = string.Format("Item[@pid={0}]", areaId);
XmlNodeList list = root.SelectNodes(xpath);
foreach (XmlElement element in list)
if (!provinceDictionary.Contains(element.GetAttribute("id")))
provinceDictionary.Add(element.GetAttribute("id"), element.InnerText); //key = code, value = text
reader.Close();
}
catch (Exception ex)
{
Console.WriteLine(ex.InnerException.Message);
}
}
return provinceDictionary;
}
}

添加至收藏夹