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

一:涉及到的知识点:

jQuery Dom操作
jQuery Ajax操作
ASP.net中的json操作
二:用了自动代码生成器
1.Dal层的代码:
public static partial class BranchTwoService
{
/// <summary>
/// 根据一级机构的ID得二级机构列表
/// </summary>
/// <param name="branchOneId">1级机构ID</param>
/// <returns></returns>
public static IList<BranchTwo> GetBranchTwoByBranchOneId(int branchOneId)
{
string strsql = "select * from BranchTwo where BranchOneNo=" + branchOneId;
return GetBranchTwosBySql(strsql);
}
} public static partial class BranchThirdService
{
/// <summary>
/// 根据二级机构的ID得三级机构列表
/// </summary>
/// <param name="branchTwoId">2级机构ID</param>
/// <returns></returns>
public static IList<BranchThird> GetBranchThirdByBranchTwoId(int branchTwoId)
{
string strsql = "select * from BranchThird where BranchTwoNo=" + branchTwoId;
return GetBranchThirdsBySql(strsql);
}
}

2.BLL层的代码:

   public static partial class BranchTwoManager
{
/// <summary>
/// 根据一级机构的ID得二级机构列表
/// </summary>
/// <param name="branchOneId">1级机构ID</param>
/// <returns></returns>
public static IList<BranchTwo> GetBranchTwoByBranchOneId(int branchOneId)
{
return DAL.BranchTwoService.GetBranchTwoByBranchOneId(branchOneId);
}
}
public static partial class BranchThirdManager
{
/// <summary>
/// 根据二级机构的ID得三级机构列表
/// </summary>
/// <param name="branchTwoId">2级机构ID</param>
/// <returns></returns>
public static IList<BranchThird> GetBranchThirdByBranchTwoId(int branchTwoId)
{
return DAL.BranchThirdService.GetBranchThirdByBranchTwoId(branchTwoId);
}
}

UI层的代码:

 protected void Page_Load(object sender, EventArgs e)
{
IList<Models.BranchOne> branchOnes = BLL.BranchOneManager.GetAllBranchOnes();
string json = JsonHelper.Serialize(branchOnes);
Response.Write(json);
} protected void Page_Load(object sender, EventArgs e)
{
if (Request["branchoneid"] != null)
{
int branchoneId = int.Parse(Request.QueryString["branchoneid"]);
IList<Models.BranchTwo> branchTwos = BLL.BranchTwoManager.GetBranchTwoByBranchOneId(branchoneId);
Response.Write(JsonHelper.Serialize(branchTwos));
}
} public partial class BranchThirdHandler : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (Request["branchtwoid"] != null)
{
int branchtwoId = int.Parse(Request.QueryString["branchtwoid"]);
IList<Models.BranchThird> branchThirds= BLL.BranchThirdManager.GetBranchThirdByBranchTwoId(branchtwoId);
Response.Write(JsonHelper.Serialize(branchThirds));
}
}
}

JQuery代码:

%@ Page Language="C#" AutoEventWireup="true"  CodeFile="Default.aspx.cs" Inherits="_Default" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>jQuery+Ajax实战三级下拉列表联动</title>
<script src="Scripts/jquery-1.2.6.js" type="text/javascript"></script>
<%-- <script src="Scripts/jquery-1.2.6-vsdoc-cn.js" type="text/javascript"></script>
--%> <script type="text/javascript">
$(document).ready(function() {
$("#divLoading").ajaxStart(function() { $(this).show(); })
.ajaxSuccess(function() { $(this).hide() })
.ajaxError(function() { $(this).html("数据加载失败!"); });
$.getJSON("BranchOneHandler.aspx", function(data) {
var $cbxBranchOne = $("#cbxBranchOne");
$.each(data, function(i, json) {
var $option = $("<option/>").append(json.branchName).attr("value", json.id);
$cbxBranchOne.append($option);
});
$cbxBranchOne[0].selectedIndex = 0;
$cbxBranchOne.change(function() {
var $cbxBranchTwo = $("#cbxBranchTwo");
$cbxBranchTwo.empty(); //清空options
var branchoneId = $(this).attr("value");
if (branchoneId) {
$.getJSON("BranchTowHandler.aspx", { branchoneid: branchoneId }, function(data) {
$.each(data, function(i, json) {
var $option = $("<option/>").append(json.branchName).attr("value", json.id);
$cbxBranchTwo.append($option);
});
});
} $cbxBranchTwo.change(function() {
var $cbxBranchThird = $("#cbxBranchThird");
$cbxBranchThird.empty();
var branchtowId = $(this).attr("value");
if (branchtowId) {
$.getJSON("BranchThirdHandler.aspx", { branchtwoid: branchtowId }, function(data) {
$.each(data, function(i, json) {
var $option = $("<option/>").append(json.branchName).attr("value", json.id);
$cbxBranchThird.append($option);
});
});
}
});
}); });
});
</script>
</head>
<body style="text-align:center;padding-top:0px;">
<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>
<form id="form1" runat="server">
<div style="padding-top:30px">
<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">
<tr>
<td colspan="3" style="height: 21px; background-color: #cc00ff" align="center">
<span style="color: #ffffff"><strong>
jQuery+Ajax实战三级下拉列表联动</strong></span></td>
</tr>
<tr>
<td style="width: 74px; background-color: #cc00ff; height: 38px;">
一级机构</td>
<td colspan="2" style="width: 243px; height: 38px;">
<select id="cbxBranchOne" style="width: 171px">
<option selected="selected"></option>
</select></td>
</tr>
<tr>
<td style="width: 74px; background-color: #cc00ff; height: 31px;">
二级机构</td>
<td colspan="2" style="width: 243px; height: 31px;">
<select id="cbxBranchTwo" style="width: 171px">
<option selected="selected"></option>
</select>
</td>
</tr>
<tr>
<td style="width: 74px; background-color: #cc00ff; height: 29px;">
三级机构</td>
<td colspan="2" style="width: 243px; height: 29px;">
<select id="cbxBranchThird" style="width: 171px">
<option selected="selected"></option>
</select>
</td>
</tr>
</table> </div>
</form>
</body>
</html>

用到的帮助类:

using System;
using System.Collections.Generic;
using System.Web;
using System.IO;
using System.Text; /// <summary>
/// JSON序列化与反序列化辅助类
/// </summary>
public class JsonHelper
{
/// <summary>
/// 用于把对象data序列化为json格式的字符串
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="data"></param>
/// <returns></returns>
public static string Serialize<T>(T data)
{
System.Runtime.Serialization.Json.DataContractJsonSerializer serializer = new System.Runtime.Serialization.Json.DataContractJsonSerializer(data.GetType());
using (MemoryStream ms = new MemoryStream())
{
serializer.WriteObject(ms, data);
return Encoding.UTF8.GetString(ms.ToArray());
//ms.Position = 0;
//using (StreamReader sr = new StreamReader(ms))
//{
// return sr.ReadToEnd();
//}
}
}
/// <summary>
/// 用于把json格式的js对象反序列化为C#中的类
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="json"></param>
/// <returns></returns>
public static T Deserialize<T>(string json)
{
T obj = Activator.CreateInstance<T>();
using (MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(json)))
{
System.Runtime.Serialization.Json.DataContractJsonSerializer serializer = new System.Runtime.Serialization.Json.DataContractJsonSerializer(obj.GetType());
return (T)serializer.ReadObject(ms);
}
}
}
 

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. java 中如何声明线程安全的集合 set, map 和list【转】

    线程安全的集合 引用自 http://blog.sina.com.cn/s/blog_508938e10102v1ig.html //make thread-safe list List MyStrL ...

  2. 20155335俞昆 《java程序设计》第八周总结

    2016-2017-2 <Java程序设计>第X周学习总结 ##认识NIO 在java中,输入与输出,基本上是以字节为单位进行的低层次处理,实际上多半是对字节数组中整个区块进行处理,对于d ...

  3. 如何利用 Python 完成验签操作

    柠檬班Python8期的佑佑以及Python7期的掠掠同学昨天都私下问华华老师如何利用Python完成验签的操作. 今天我们就以佑佑的例子来跟大家进行简单的说明以及操作! 一.什么是验签: 用非常简单 ...

  4. B. Light It Up

    题目链接:http://codeforces.com/problemset/problem/1000/B 代码: #include<iostream> #include<cstrin ...

  5. Linux安装后首次设置root密码

    ① 1.sudo password root //给指定用户设置密码 2.sudo passwd root //给指定用户设置密码 ②su root //切换到指定用户

  6. 【黑客免杀攻防】读书笔记2 - 免杀与特征码、其他免杀技术、PE进阶介绍

    第3章 免杀与特征码 这一章主要讲了一些操作过程.介绍了MyCCL脚本木马免杀的操作,对于定位特征码在FreeBuf也曾发表过类似工具. VirTest5.0特征码定位器 http://www.fre ...

  7. Nodejs+定时截图+发送邮件

    功能 每天定时截图,并把截到的图片自动通过邮件发送. 说明 代码注释已经非常详细,就不多做说明,需要的朋友自己查看代码即可,主文件Mail.js,截图文件capturePart1.js,capture ...

  8. spring mvc context-param init-param 区别

    init-param:mvc 配置文件context-param spring配置文件

  9. cocos2d-x播放视频的处理

    cocos2d-x是支持直接播放视频的,用的是Native端的播放器,视频的默认层级是在cocos的层级之上,如果是想让视频上面有cocos的控件,只能将视频的UI层级放在最下面,这个方法网上已经有比 ...

  10. 13-JS中的面向对象

    创建对象的几种常用方式 1.使用Object或对象字面量创建对象 2.工厂模式创建对象 3.构造函数模式创建对象 4.原型模式创建对象 1.使用Object或对象字面量创建对象 JS中最基本创建对象的 ...