本功能特点:
下级的显示和数据的加载都是由上一级下拉框的SelectedIndexChanged触发的,在上级下拉框没有选择之前,下级不会出现,用户体验比较好。
无刷新方面,采用AJAX技术,在数据选择的时候,不会造成页面刷新,不会回传整个页面,不影响其他控件。
由于省市区三级数据较大,采用数据库保存数据,代码中需要用到DBHelper来操作数据库。
注意事项:
本代码完全用Asp.net实现,没有使用javascript,可以把功能单独嵌套到ASP页面中,也可以做成用户控件。
由于采用了AJAX无刷新技术,如果嵌入到的页面中包含有ScriptManager控件,需要把本代码中的改为ScriptManagerProxy.
页面代码:

 <style type="text/css">
#pro_city_area select{width:78px;}
#ddlPro{display:inline;}
#ddlCity{display:none;}
#ddlArea{display:none;}
</style>
<form id="form1" runat="server">
<asp:ScriptManager ID="ScriptManager1" runat="server">
</asp:ScriptManager>
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<ContentTemplate>
<div id="pro_city_area">
<asp:DropDownList ID="ddlPro" runat="server"
onselectedindexchanged="ddlPro_SelectedIndexChanged">
</asp:DropDownList>
&nbsp;<asp:DropDownList ID="ddlCity" runat="server"
onselectedindexchanged="ddlCity_SelectedIndexChanged" ViewStateMode="Enabled">
</asp:DropDownList>
&nbsp;<asp:DropDownList ID="ddlArea" runat="server">
</asp:DropDownList>
</div>
</ContentTemplate>
</asp:UpdatePanel>
</form>

后置代码:

      protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
//加载省份数据
BindProData();
}
}
DBHelper db = new DBHelper();
//绑定省份数据
private void BindProData()
{ string sql = "SELECT [id],[provinceID],[province] FROM [Public].[dbo].[Province]";
DataTable dt = db.GetDataTable(sql, null);
this.ddlPro.DataSource = dt;
this.ddlPro.DataTextField = "province";
this.ddlPro.DataValueField = "provinceID";
this.ddlPro.DataBind();
this.ddlPro.Items.Insert(, new ListItem("请选择",""));
}
//选择省份后显示市区下拉框,并加载当前省份下的市区数据
protected void ddlPro_SelectedIndexChanged(object sender, EventArgs e)
{
ddlCity.Attributes.CssStyle.Add("display", "inline");
int proId = int.Parse(ddlPro.SelectedValue.ToString());
ViewState["proId"] = proId;
BindCity(proId);
}
//绑定市区数据
private void BindCity(int proId)
{
string sql = @"SELECT [id]
,[cityID]
,[city]
,[father]
FROM [Public].[dbo].[City] where father=@proId";
SqlParameter[] paras ={
new SqlParameter("@proId",proId)
};
DataTable dt = db.GetDataTable(sql, paras);
this.ddlCity.DataSource = dt;
this.ddlCity.DataTextField = "city";
this.ddlCity.DataValueField = "cityID";
this.ddlCity.DataBind();
this.ddlCity.Items.Insert(, new ListItem("请选择", ""));
}
//选择城市后显示地区下拉框,并加载当前城市下的地区数据
protected void ddlCity_SelectedIndexChanged(object sender, EventArgs e)
{
ddlArea.Attributes.CssStyle.Add("display", "inline");
int cityId = int.Parse(ddlCity.SelectedValue.ToString());
BindArea(cityId);
}
//绑定地区数据
private void BindArea(int cityId)
{ string sql = @"SELECT [id]
,[areaID]
,[area]
,[father]
FROM [Public].[dbo].[Area] where father=@cityId";
SqlParameter[] paras ={
new SqlParameter("@cityId",cityId)
};
DataTable dt = db.GetDataTable(sql, paras);
this.ddlArea.DataSource = dt;
this.ddlArea.DataTextField = "area";
this.ddlArea.DataValueField = "areaID";
this.ddlArea.DataBind();
this.ddlArea.Items.Insert(, new ListItem("请选择", ""));
}

完全使用ASP.NET实现的省市区级联效果的更多相关文章

  1. bootstrap中table页面做省市区级联效果(级联库见前面级联编辑)(非select下拉框)

    <!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8" ...

  2. [C#]使用 C# 代码实现拓扑排序 dotNet Core WEB程序使用 Nginx反向代理 C#里面获得应用程序的当前路径 关于Nginx设置端口号,在Asp.net 获取不到的,解决办法 .Net程序员 初学Ubuntu ,配置Nignix 夜深了,写了个JQuery的省市区三级级联效果

    [C#]使用 C# 代码实现拓扑排序   目录 0.参考资料 1.介绍 2.原理 3.实现 4.深度优先搜索实现 回到顶部 0.参考资料 尊重他人的劳动成果,贴上参考的资料地址,本文仅作学习记录之用. ...

  3. js省市区级联选择联动

    <!DOCTYPE html> <html lang="zh-cn"> <head> <meta http-equiv="Con ...

  4. WPF MVVM模式下ComboBox级联效果 选择第一项

    MVVM模式下做的省市区的级联效果.通过改变ComboBox执行命令改变市,区. 解决主要问题就是默认选中第一项 1.首先要定义一个属性,继承自INotifyPropertyChanged接口.我这里 ...

  5. JavaScript 省市级联效果

    JavaScript 省市级联效果 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" " ...

  6. JavaScript实现省市级联效果实例

    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/ ...

  7. javascript中的省市级联效果

    学习javascript的时候都遇到过这样的需求,不仅是省市,还有其他的一些场景,看看关键的代码有哪些吧. <head runat="server"> <titl ...

  8. 用扩展方法实现DevExpress-GridControl级联效果

    首先,让我们先回顾下.Net中扩展方法的特征: 1.  必须在一个非嵌套.非泛型的静态类中: 2.  至少有一个参数(this 作前缀的参数): 3.  第一个参数必须附加this做前缀: 4.  第 ...

  9. 纯js实现省市级联效果

    我们都知道一般有注册的时候会让用户填入省市啊地区什么的,然后我就想使用纯js制作一个省市级联的效果,只是用于学习以及回顾温习用,首先看下效果图,界面很丑啊,不要嫌弃! 首先还是先看下我的项目目录吧 很 ...

随机推荐

  1. 让opencv输出人脸检测的得分(置信率)

    最近项目略多,其中一个需要找出一些和脸比较像但是不是脸的负样本,想用opencv的人脸检测器检测到的错误脸作为这样的负样本. 但是国内(包括国外)居然几乎没有相关的资料如何输出detectMultiS ...

  2. Codeforces 1009D:Relatively Prime Graph

    D. Relatively Prime Graph time limit per test 2 seconds memory limit per test 256 megabytes input st ...

  3. 《FDTD electromagnetic field using MATLAB 》读书笔记001-差商种类

    有限差分就是用差商代替微商,有3钟: 1.向前差商 2.向后差商 3.中心差商 上面三张途中虚线就是函数在x的精确微商(偏导数),直线就是用来代替精确 微商的差商格式.

  4. 【传输协议】https SSL主流数字证书都有哪些格式?

    一般来说,主流的Web服务软件,通常都基于两种基础密码库:OpenSSL和Java. Tomcat.Weblogic.JBoss等,使用Java提供的密码库.通过Java的Keytool工具,生成Ja ...

  5. test20181024 qu

    题意 分析 极似UVa11995 I Can Guess the Data Structure! 模拟即可,时间复杂度(--)\(O(n \log n)\) 旁边的L君:这题有两个坑点,我被卡了一次. ...

  6. PHP 中的文本截取分析之效率

    PHP 中的文本截取分析之效率 在使用 ThinkPHP 或 Laravel 时都会有用到文本截取的帮助函数. 分别是 msubstr (ThinkPHP 3,ThinkPHP 5 没找到) mb_s ...

  7. Nginx 服务器伪静态配置不当造成 Access denied

    Nginx 服务器伪静态配置不当造成 Access denied 有群有反馈将 FastAdmin 布署到阿里云后无法打开后台. 出现如下提示,首页是可以打开,点登录链接后出现的.(下是群友的截图) ...

  8. Hive之 hive与hadoop的联系

    Hive与Hadoop调用图 解析: 1.提交sql 交给驱动2.驱动编译:解析相关的字段表信息3.去metastore查询相关的信息 返回字段表信息4.编译返回信息 发给驱动5.驱动发送一个执行计划 ...

  9. mysql update 没有where 不能更新的安全保护设置

    http://www.cnblogs.com/wjoyxt/p/5620827.html    没有where 不能更新的安全保护设置 http://dev.yesky.com/429/3543292 ...

  10. Spring 部署Tomcat 404 错误解决方案

    将Spring项目部署到tomcat后,访问网页出现404错误 HTTP Status 404 – Not Found The origin server did not find a current ...