三级联动就是用三个下拉列表框DropDownList,每个里面添加相应的东西,在第一个列表框中选择一个值,第二三个列表框都会根据第一个选择进行相应的变化,在第二个列表框中选择一个值,第三个列表框也会根据第二个的选择进行变化,通常用于地区选择以及时间日期选择。

注:只有上一个列表框选择执行提交事件,才可以在提交事件中写执行方法,AutoPostBack - 自动提交事件,将DropDownList属性的AutoPostBack改为true

写一个简单的数据库,用三级联动将数据库里的信息查找相应显示

数据库:

写一个省,市,区县的表,市的Pcode为省的Acode,区县的Pcode为市的Acode

  1. create database China
  2. go
  3. use China
  4. go
  5. create table Chinast
  6. (
  7. Acode nvarchar(20),
  8. Aname nvarchar(20),
  9. Pcode nvarchar(20)
  10. )
  11.  
  12. insert into Chinast values('','山东','')
  13. insert into Chinast values('','济南','')
  14. insert into Chinast values('','历下区','')
  15. insert into Chinast values('','天桥区','')
  16. insert into Chinast values('','槐荫区','')
  17. insert into Chinast values('','淄博','')
  18. insert into Chinast values('','张店区','')
  19. insert into Chinast values('','周村区','')
  20. insert into Chinast values('','淄川区','')
  21. insert into Chinast values('','山西','')
  22. insert into Chinast values('','太原','')
  23. insert into Chinast values('','清徐','')
  24. insert into Chinast values('','阳曲','')
  25. insert into Chinast values('','古交','')
  26. insert into Chinast values('','临汾','')
  27. insert into Chinast values('','霍州','')
  28. insert into Chinast values('','洪洞','')
  29. insert into Chinast values('','襄汾','')

写一个Web窗体,里面放三个DropDownList,简单的调整一下

前台代码:

  1. <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default1.aspx.cs" Inherits="Default1" %>
  2.  
  3. <!DOCTYPE html>
  4.  
  5. <html xmlns="http://www.w3.org/1999/xhtml">
  6. <head runat="server">
  7. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  8. <title></title>
  9. <style type="text/css">
  10. .a {
  11. position: relative;
  12. top: 100px;
  13. left: 30%;
  14. height: 40px;
  15. width: 100px;
  16. font-family:微软雅黑;
  17. font-size:25px;
  18. }
  19. </style>
  20. </head>
  21. <body>
  22. <form id="form1" runat="server">
  23. <asp:DropDownList ID="DropDownList1" runat="server" CssClass="a" AutoPostBack="True"></asp:DropDownList>&nbsp;&nbsp;
  24. <asp:DropDownList ID="DropDownList2" runat="server" CssClass="a" AutoPostBack="True"></asp:DropDownList>&nbsp;&nbsp;
  25. <asp:DropDownList ID="DropDownList3" runat="server" CssClass="a"></asp:DropDownList>
  26. </form>
  27. </body>
  28. </html>

数据库实体类

  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Web;
  5.  
  6. /// <summary>
  7. /// Chinast 的摘要说明
  8. /// </summary>
  9. public class Chinast
  10. {
  11. public Chinast()
  12. {
  13. //
  14. // TODO: 在此处添加构造函数逻辑
  15. //
  16. }
  17.  
  18. public string Acode { get; set; }
  19. public string Aname { get; set; }
  20. public string Pcode { get; set; }
  21. }

数据库操作类:

  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Web;
  5. using System.Data.SqlClient;
  6.  
  7. /// <summary>
  8. /// ChinastData 的摘要说明
  9. /// </summary>
  10. public class ChinastData
  11. {
  12. SqlConnection conn = null;
  13. SqlCommand cmd = null;
  14. public ChinastData()
  15. {
  16. conn = new SqlConnection("server=.;database=China;user=sa;pwd=123;");
  17. cmd = conn.CreateCommand();
  18. }
  19.  
  20. /// <summary>
  21. /// 根据地区的Pcode查找和此Pcode相应的地区信息
  22. /// </summary>
  23. /// <param name="code"></param>
  24. /// <returns></returns>
  25. public List<Chinast> selectAll(string code)
  26. {
  27. List<Chinast> li = new List<Chinast>();
  28. cmd.CommandText = "select * from Chinast where Pcode=@Pcode";
  29. cmd.Parameters.Clear();
  30. cmd.Parameters.Add("@Pcode", code);
  31. conn.Open();
  32. SqlDataReader dr = cmd.ExecuteReader();
  33. if (dr.HasRows)
  34. {
  35. while (dr.Read())
  36. {
  37. Chinast st=new Chinast();
  38. st.Acode=dr["Acode"].ToString();
  39. st.Aname= dr["Aname"].ToString();
  40. st.Pcode=dr["Pcode"].ToString();
  41. li.Add(st);
  42. }
  43. }
  44. conn.Close();
  45. return li;
  46. }
  47.  
  48. }

后台代码:

  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Web;
  5. using System.Web.UI;
  6. using System.Web.UI.WebControls;
  7.  
  8. public partial class Default1 : System.Web.UI.Page
  9. {
  10. protected void Page_Load(object sender, EventArgs e)
  11. {
  12. DropDownList1.SelectedIndexChanged += DropDownList1_SelectedIndexChanged;//省提交事件委托
  13. DropDownList2.SelectedIndexChanged += DropDownList2_SelectedIndexChanged;//市提交事件委托
  14. if (IsPostBack == false)//判断IsPostBack为false,将代码写在里面,页面只执行一次,防止每次操作进行页面刷新
  15. {
  16. //调用数据库方法,返回一个Chinast泛型集合,传参省的Pcode
  17. List<Chinast> sheng = new ChinastData().selectAll("");
  18. DropDownList1.DataSource = sheng;//绑定数据源
  19. DropDownList1.DataTextField = "Aname";//下拉框里面显示的值,DataTextField为返回集合中的Aname,地名
  20. DropDownList1.DataValueField = "Acode";//Value为他的Acode;
  21. DropDownList1.DataBind();
  22.  
  23. //因为每个市的Pcode为省的Acode,Acode为省的Value值,则根据市的Pcode查数据时就是省的Value,DropDownList1.SelectedItem.Value
  24. List<Chinast> shi = new ChinastData().selectAll(DropDownList1.SelectedItem.Value);
  25. DropDownList2.DataSource = shi;
  26. DropDownList2.DataTextField = "Aname";
  27. DropDownList2.DataValueField = "Acode";
  28. DropDownList2.DataBind();
  29.  
  30. //因为每个区县的Pcode为市的Acode,Acode为市的Value值,则根据区县的Pcode查数据时就是市的Value,DropDownList2.SelectedItem.Value
  31. List<Chinast> qu = new ChinastData().selectAll(DropDownList2.SelectedItem.Value);
  32. DropDownList3.DataSource = qu;
  33. DropDownList3.DataTextField = "Aname";
  34. DropDownList3.DataValueField = "Acode";
  35. DropDownList3.DataBind();
  36.  
  37. }
  38.  
  39. }
  40.  
  41. void DropDownList2_SelectedIndexChanged(object sender, EventArgs e)//市提交事件
  42. {
  43. List<Chinast> qu = new ChinastData().selectAll(DropDownList2.SelectedItem.Value);//根据选择市的Value查找相应的区县
  44. DropDownList3.DataSource = qu;
  45. DropDownList3.DataTextField = "Aname";
  46. DropDownList3.DataValueField = "Acode";
  47. DropDownList3.DataBind();
  48. }
  49.  
  50. void DropDownList1_SelectedIndexChanged(object sender, EventArgs e)//省提交事件,选择后执行提交,市及区县根据Value值执行相应的查找显示
  51. {
  52. List<Chinast> shi = new ChinastData().selectAll(DropDownList1.SelectedItem.Value);//根据选择省的Value查找相应的市
  53. DropDownList2.DataSource = shi;
  54. DropDownList2.DataTextField = "Aname";
  55. DropDownList2.DataValueField = "Acode";
  56. DropDownList2.DataBind();
  57.  
  58. List<Chinast> qu = new ChinastData().selectAll(DropDownList2.SelectedItem.Value);//根据选择市的Value查找相应的区县
  59. DropDownList3.DataSource = qu;
  60. DropDownList3.DataTextField = "Aname";
  61. DropDownList3.DataValueField = "Acode";
  62. DropDownList3.DataBind();
  63. }
  64.  
  65. }

 

ASP.NET 三级联动的更多相关文章

  1. 2014.12.06 ASP.NET 三级联动,添加员工,修改员工

    (一)三级联动 要实现的效果: 代码: MyDBDataContext context = new MyDBDataContext(); protected void Page_Load(object ...

  2. asp.net_MVC_jq三级联动

    数据库结构 建立三张表,Association,Team,Player 关系如下: 建立asp.net MVC 3项目,在HomeController.cs中利用Linq to SQL获取数据 首先实 ...

  3. ASP.NET实现省市区三级联动(局部刷新)

    跟前一篇ASP.NET实现年月日三级联动(局部刷新)一样,没什么技术含量,直接上代码 <asp:ScriptManager ID="ScriptManager1" runat ...

  4. 在ASP.NET MVC中实现一种不同于平常的三级联动、级联方式, 可用于城市、车型选择等多层级联场景

    三级或多级联动的场景经常会碰到,比如省.市.区,比如品牌.车系.车型,比如类别的多级联动......我们首先想到的是用三个select来展示,这是最通常的做法.但在另外一些场景中,比如确定搜索条件的时 ...

  5. webForm(三)——三级联动

    三级联动 首先附图一张,初步认识一下什么是三级联动:                           注:选第一个后面两个变,选第二个,最后一个改变. 其次,做三级联动需要注意的方面:①DropD ...

  6. 用DropDownList实现的省市级三级联动

    这是一个用DropDownList 实现的省市级三级联动,记录一下········ <asp:ScriptManager ID="ScriptManager1" runat= ...

  7. ajax验证表单元素规范正确与否 ajax展示加载数据库数据 ajax三级联动

    一.ajax验证表单元素规范正确与否 以用ajax来验证用户名是否被占用为例 1创建表单元素<input type="text" id="t"> 2 ...

  8. 20150303--从SQL中获取数据的三级联动

    省市地区的三级联动,每变更一次所选地都需要提交,但是又不需要把整个页面提交,所以我们需要使用控件:UdataPanel.工具--AJAX扩展 还有ScriptManager,并要将其放在页面的最顶端. ...

  9. Web 1三级联动 下拉框 2添加修改删除 弹框

    Web  三级联动 下拉框 using System; using System.Collections.Generic; using System.Linq; using System.Web; u ...

随机推荐

  1. 十二省NOI“省选”联考模测(第二场)A抽卡大赛

    /* dp维护整体的概率, 每次相当于回退一格然后重新dp一格 */ #include<cstdio> #include<algorithm> #include<iost ...

  2. JVM总结-invokedynamic

    前不久,“虚拟机”赛马俱乐部来了个年轻人,标榜自己是动态语言,是先进分子. 这一天,先进分子牵着一头鹿进来,说要参加赛马.咱部里的老学究 Java 就不同意了呀,鹿又不是马,哪能参加赛马. 当然了,这 ...

  3. nodejs学习笔记<七> 路由

    // 引用模块(与C#中命名空间,Java中引用包同理) var http = require("http"); var path = require("path&quo ...

  4. 《汇编语言 基于x86处理器》第九章字符串与数组部分的代码

    ▶ 书中第九章的程序,主要讲了字符串相关的输入.输出,以及冒泡排序.二分搜索 ● 代码,Irvine32 中的字符串库函数代码范例 INCLUDE Irvine32.inc .data str1 BY ...

  5. 序列化 (实现RPC的基础)

    public interface ISerializer { <T> byte[] serializer(T obj); <T> T deSerializer(byte[] d ...

  6. Android 开发第二步——建立文件

    先以Hello World工程为样板 启动AVD 但在编程过程中遇到了非常棘手的问题 等待下一期完成

  7. zabbix使用ICMP Ping模版实现对客户端网络状态的监控,监控丢包率、响应时间

    参考网站: https://www.cnblogs.com/saneri/p/6706578.html 使用fping报错注意事项: https://blog.csdn.net/oqqssh/arti ...

  8. 安装 docker管理 工具 页面 portainer

    sudo docker run -d -p 7998:9000 -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data ...

  9. charles抓包的安装,使用说明以及常见问题解决(windows)

    charles抓包的安装,使用说明以及常见问题解决(windows) https://blog.csdn.net/zhangxiang_1102/article/details/77855548

  10. c++builder 6 [Linker Fatal error] Unable to open file 'PROXIES.OBJ'

    c++builder 6 [Linker Fatal error] Unable to open file 'PROXIES.OBJ' http://blog.csdn.net/cb168/artic ...