本片文章为练习,项目中不会这样写:

一:涉及到的知识点:

jQuery Dom操作
jQuery Ajax操作
ASP.net中的json操作
二:用了自动代码生成器
1.Dal层的代码:
  1. public static partial class BranchTwoService
  2. {
  3. /// <summary>
  4. /// 根据一级机构的ID得二级机构列表
  5. /// </summary>
  6. /// <param name="branchOneId">1级机构ID</param>
  7. /// <returns></returns>
  8. public static IList<BranchTwo> GetBranchTwoByBranchOneId(int branchOneId)
  9. {
  10. string strsql = "select * from BranchTwo where BranchOneNo=" + branchOneId;
  11. return GetBranchTwosBySql(strsql);
  12. }
  13. }
  14.  
  15. public static partial class BranchThirdService
  16. {
  17. /// <summary>
  18. /// 根据二级机构的ID得三级机构列表
  19. /// </summary>
  20. /// <param name="branchTwoId">2级机构ID</param>
  21. /// <returns></returns>
  22. public static IList<BranchThird> GetBranchThirdByBranchTwoId(int branchTwoId)
  23. {
  24. string strsql = "select * from BranchThird where BranchTwoNo=" + branchTwoId;
  25. return GetBranchThirdsBySql(strsql);
  26. }
  27. }

2.BLL层的代码:

  1. public static partial class BranchTwoManager
  2. {
  3. /// <summary>
  4. /// 根据一级机构的ID得二级机构列表
  5. /// </summary>
  6. /// <param name="branchOneId">1级机构ID</param>
  7. /// <returns></returns>
  8. public static IList<BranchTwo> GetBranchTwoByBranchOneId(int branchOneId)
  9. {
  10. return DAL.BranchTwoService.GetBranchTwoByBranchOneId(branchOneId);
  11. }
  12. }
  13. public static partial class BranchThirdManager
  14. {
  15. /// <summary>
  16. /// 根据二级机构的ID得三级机构列表
  17. /// </summary>
  18. /// <param name="branchTwoId">2级机构ID</param>
  19. /// <returns></returns>
  20. public static IList<BranchThird> GetBranchThirdByBranchTwoId(int branchTwoId)
  21. {
  22. return DAL.BranchThirdService.GetBranchThirdByBranchTwoId(branchTwoId);
  23. }
  24. }

UI层的代码:

  1. protected void Page_Load(object sender, EventArgs e)
  2. {
  3. IList<Models.BranchOne> branchOnes = BLL.BranchOneManager.GetAllBranchOnes();
  4. string json = JsonHelper.Serialize(branchOnes);
  5. Response.Write(json);
  6. }
  7.  
  8. protected void Page_Load(object sender, EventArgs e)
  9. {
  10. if (Request["branchoneid"] != null)
  11. {
  12. int branchoneId = int.Parse(Request.QueryString["branchoneid"]);
  13. IList<Models.BranchTwo> branchTwos = BLL.BranchTwoManager.GetBranchTwoByBranchOneId(branchoneId);
  14. Response.Write(JsonHelper.Serialize(branchTwos));
  15. }
  16. }
  17.  
  18. public partial class BranchThirdHandler : System.Web.UI.Page
  19. {
  20. protected void Page_Load(object sender, EventArgs e)
  21. {
  22. if (Request["branchtwoid"] != null)
  23. {
  24. int branchtwoId = int.Parse(Request.QueryString["branchtwoid"]);
  25. IList<Models.BranchThird> branchThirds= BLL.BranchThirdManager.GetBranchThirdByBranchTwoId(branchtwoId);
  26. Response.Write(JsonHelper.Serialize(branchThirds));
  27. }
  28. }
  29. }

JQuery代码:

  1. %@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>
  2.  
  3. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  4.  
  5. <html xmlns="http://www.w3.org/1999/xhtml" >
  6. <head runat="server">
  7. <title>jQuery+Ajax实战三级下拉列表联动</title>
  8. <script src="Scripts/jquery-1.2.6.js" type="text/javascript"></script>
  9. <%-- <script src="Scripts/jquery-1.2.6-vsdoc-cn.js" type="text/javascript"></script>
  10. --%> <script type="text/javascript">
  11. $(document).ready(function() {
  12. $("#divLoading").ajaxStart(function() { $(this).show(); })
  13. .ajaxSuccess(function() { $(this).hide() })
  14. .ajaxError(function() { $(this).html("数据加载失败!"); });
  15. $.getJSON("BranchOneHandler.aspx", function(data) {
  16. var $cbxBranchOne = $("#cbxBranchOne");
  17. $.each(data, function(i, json) {
  18. var $option = $("<option/>").append(json.branchName).attr("value", json.id);
  19. $cbxBranchOne.append($option);
  20. });
  21. $cbxBranchOne[0].selectedIndex = 0;
  22. $cbxBranchOne.change(function() {
  23. var $cbxBranchTwo = $("#cbxBranchTwo");
  24. $cbxBranchTwo.empty(); //清空options
  25. var branchoneId = $(this).attr("value");
  26. if (branchoneId) {
  27. $.getJSON("BranchTowHandler.aspx", { branchoneid: branchoneId }, function(data) {
  28. $.each(data, function(i, json) {
  29. var $option = $("<option/>").append(json.branchName).attr("value", json.id);
  30. $cbxBranchTwo.append($option);
  31. });
  32. });
  33. }
  34.  
  35. $cbxBranchTwo.change(function() {
  36. var $cbxBranchThird = $("#cbxBranchThird");
  37. $cbxBranchThird.empty();
  38. var branchtowId = $(this).attr("value");
  39. if (branchtowId) {
  40. $.getJSON("BranchThirdHandler.aspx", { branchtwoid: branchtowId }, function(data) {
  41. $.each(data, function(i, json) {
  42. var $option = $("<option/>").append(json.branchName).attr("value", json.id);
  43. $cbxBranchThird.append($option);
  44. });
  45. });
  46. }
  47. });
  48. });
  49.  
  50. });
  51. });
  52. </script>
  53. </head>
  54. <body style="text-align:center;padding-top:0px;">
  55. <div id="divLoading" style="width:50px;height:20px;color;white;background-color:Green;text-align:center;padding-top:3px;position:absolute;top:0px;left:0px;display:none;">Loading...</div>
  56. <form id="form1" runat="server">
  57. <div style="padding-top:30px">
  58. <table id="tbBranch" style="width: 361px; border-left-color: #cc00ff; border-bottom-color: #cc00ff; border-top-style: solid; border-top-color: #cc00ff; border-right-style: solid; border-left-style: solid; border-right-color: #cc00ff; border-bottom-style: solid;" border="1">
  59. <tr>
  60. <td colspan="3" style="height: 21px; background-color: #cc00ff" align="center">
  61. <span style="color: #ffffff"><strong>
  62. jQuery+Ajax实战三级下拉列表联动</strong></span></td>
  63. </tr>
  64. <tr>
  65. <td style="width: 74px; background-color: #cc00ff; height: 38px;">
  66. 一级机构</td>
  67. <td colspan="2" style="width: 243px; height: 38px;">
  68. <select id="cbxBranchOne" style="width: 171px">
  69. <option selected="selected"></option>
  70. </select></td>
  71. </tr>
  72. <tr>
  73. <td style="width: 74px; background-color: #cc00ff; height: 31px;">
  74. 二级机构</td>
  75. <td colspan="2" style="width: 243px; height: 31px;">
  76. <select id="cbxBranchTwo" style="width: 171px">
  77. <option selected="selected"></option>
  78. </select>
  79. </td>
  80. </tr>
  81. <tr>
  82. <td style="width: 74px; background-color: #cc00ff; height: 29px;">
  83. 三级机构</td>
  84. <td colspan="2" style="width: 243px; height: 29px;">
  85. <select id="cbxBranchThird" style="width: 171px">
  86. <option selected="selected"></option>
  87. </select>
  88. </td>
  89. </tr>
  90. </table>
  91.  
  92. </div>
  93. </form>
  94. </body>
  95. </html>

用到的帮助类:

  1. using System;
  2. using System.Collections.Generic;
  3. using System.Web;
  4. using System.IO;
  5. using System.Text;
  6.  
  7. /// <summary>
  8. /// JSON序列化与反序列化辅助类
  9. /// </summary>
  10. public class JsonHelper
  11. {
  12. /// <summary>
  13. /// 用于把对象data序列化为json格式的字符串
  14. /// </summary>
  15. /// <typeparam name="T"></typeparam>
  16. /// <param name="data"></param>
  17. /// <returns></returns>
  18. public static string Serialize<T>(T data)
  19. {
  20. System.Runtime.Serialization.Json.DataContractJsonSerializer serializer = new System.Runtime.Serialization.Json.DataContractJsonSerializer(data.GetType());
  21. using (MemoryStream ms = new MemoryStream())
  22. {
  23. serializer.WriteObject(ms, data);
  24. return Encoding.UTF8.GetString(ms.ToArray());
  25. //ms.Position = 0;
  26. //using (StreamReader sr = new StreamReader(ms))
  27. //{
  28. // return sr.ReadToEnd();
  29. //}
  30. }
  31. }
  32. /// <summary>
  33. /// 用于把json格式的js对象反序列化为C#中的类
  34. /// </summary>
  35. /// <typeparam name="T"></typeparam>
  36. /// <param name="json"></param>
  37. /// <returns></returns>
  38. public static T Deserialize<T>(string json)
  39. {
  40. T obj = Activator.CreateInstance<T>();
  41. using (MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(json)))
  42. {
  43. System.Runtime.Serialization.Json.DataContractJsonSerializer serializer = new System.Runtime.Serialization.Json.DataContractJsonSerializer(obj.GetType());
  44. return (T)serializer.ReadObject(ms);
  45. }
  46. }
  47. }
 

JQuery+Ajax实战三级下拉列表联动(八)的更多相关文章

  1. jquery ajax实现省市二级联动

    今天给大家带来使用jQuery ajax实现的省市联动效果.我们直奔主题,先说下实现思路: 准备数据 这里数据库我使用的是mysql,先看下表格: provience表 city表 这里使用provi ...

  2. java结合jQuery.ajax实现左右菜单联动刷新列表内容

    http://域名/一级菜单ID-二级菜单ID/ 用这种URL请求页面,出现如图所看到的内容: 该页面包括四部分,顶部文件夹+左側菜单+右側菜单+右下側数据列表. 左側菜单包括一级菜单和二级菜单,点击 ...

  3. ASP.NET webform基于Jquery,AJAX的三级联动

    主要html代码 <select id="province"> <option value="0">--请选择省份--</opti ...

  4. 用jQuery,ajax,实现三级联动封装JS的文件

    // JavaScript Document $(document).ready(function(e) { //找到ID=SANJI的DIV,造三个下拉扔进去 var str = "< ...

  5. Jquery ajax动态更新下拉列表的内容

    $("#book_id").change(function(){ $book_id=$(this).children('option:selected').val(); //ale ...

  6. 用jquery ajax做的select菜单,选中的效果

    //用server端语言赋值给js变量     var departmentId = '<%=提交的值 %>', deviceId='<%=提交的值 %>'     $(fun ...

  7. 使用PHP+MySql+Ajax+jQuery实现省市区三级联动功能

    使用PHP+MySql+Ajax+jQuery实现省市区三级联动功能 要求:写一个省市区(或者年月日)的三级联动,实现地区或时间的下拉选择. 实现技术:php ajax 实现:省级下拉变化时市下拉区下 ...

  8. AJAX部分---对比js做日期的下拉选择 和 ajax做三级联动;

    js做日期选择: 实现当前年份的前5后5年的日期选择 实现功能:年份和月份页面加载完成使用JS循环添加,天数根据月份的变化动态添加改变 扩展功能:天数可以根据闰年平年变化 <body> & ...

  9. ajax 实现三级联动

    ajax 实现三级联动,相当于写了一个小插件,用的时候直接拿过来用就可以了,这里我用了数据库中的chinastates表, 数据库内容很多,三级联动里的地区名称都在里面,采用的是代号副代号的方式 比如 ...

随机推荐

  1. 使用swagger来编写在线api文档

    swagger是一个非常简单,强大的框架.快速上手,只需要引入jar包 , 使用注解就可以生成一个漂亮的在线api文档 pom.xml <dependency> <groupId&g ...

  2. Hive记录-Hive on Spark环境部署

    1.hive执行引擎 Hive默认使用MapReduce作为执行引擎,即Hive on mr.实际上,Hive还可以使用Tez和Spark作为其执行引擎,分别为Hive on Tez和Hive on ...

  3. PHP7 学习笔记(十)会话控制

    防守打法 1.设置Cookie,[基于内存的Cookie] setcookie('Username','tinywan'); setcookie('Age','24'); 2.查看Cookie存储位置 ...

  4. Pool多进程示例

    利用Pool类多进程实现批量主机管理 #!/usr/bin/python # -*- coding: UTF-8 -*- # Author: standby # Time: 2017-03-02 # ...

  5. 大量界面刷新时手动Dispose也是有必要的

    在winform窗体上拖一个flowLayoutPane,一个Button,项目中再创建一个用户控件UcControl,用户控件上放几十个子控件 private void button1_Click( ...

  6. [C++]Linux之Ubuntu下编译C程序出现错误:“ stray ‘\302'或者'\240' in program”的解决方案

    参考文献:[error: stray ‘\240’ in program或 error: stray ‘\302’ in program](http://blog.csdn.net/u01299585 ...

  7. Java EE之 Hibernate 5.x版本中SchemaExport的用法

    //hibernate 5.0.1 Final ServiceRegistry serviceRegistry = new StandardServiceRegistryBuilder().confi ...

  8. html 替换元素

    参考博客:http://www.cnblogs.com/wkylin/archive/2011/05/12/2044328.html 可替换元素也是行内元素 替换元素是浏览器根据其标签的元素与属性来判 ...

  9. Python3学习笔记21-实例属性和类属性

    由于Python是动态语言,根据类创建的实例可以任意绑定属性. 给实例绑定属性的方法是通过实例变量,或者通过self变量: class Student(object): def __init__(se ...

  10. oracle 命令行

    背景 看到当初竟然记录了命令行,想想自己用了多久才知道了命令行,好像有几年了吧.当时还记得买了两本oracle9的管理书籍,就跟见了九阴真经一样,从头到尾熟悉了好几遍,不过也大部分忘了交给老师了.以下 ...