JQuery+Ajax实战三级下拉列表联动(八)

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

一:涉及到的知识点:

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);
        }
    }
}
时间: 2024-10-04 23:21:17

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

jquery ajax实现省市二级联动

今天给大家带来使用jQuery ajax实现的省市联动效果.我们直奔主题,先说下实现思路: 准备数据 这里数据库我使用的是mysql,先看下表格: provience表 city表 这里使用provience表的主键作为city表的外键,等下根据省份的id查找对应的市区 查询方法的封装 接下来就是实现查询所有省市以及根据省份id查找对应的城市的方法,这里我写了一个BaseDao封装了一些基本的数据库链接以及关闭连接的方法: BaseDao.java package com.jqueryajax.

Jquery Ajax + php 三级联动实例

sanji.php <!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> <meta http-equiv=&quo

ASP.NET webform开发中基于Jquery,AJAX的三级联动

主要html代码 <select id="province"> <option value="0">--请选择省份--</option> </select> <select id="city"> <option value="0">--请选择城市--</option> </select> <select id="ar

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

// JavaScript Document $(document).ready(function(e) { //找到ID=SANJI的DIV,造三个下拉扔进去 var str = "<select id='sheng'></select><select id='shi'></select><select id='qu'></select>"; $("#sanji").html(str); //

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

//用server端语言赋值给js变量 var departmentId = '<%=提交的值 %>', deviceId='<%=提交的值 %>' $(function () { $.ajax({ url: "deJson.action", type: 'POST', dataType: 'JSON', timeout: 5000, //error: function() {alert('载入数据异常,请重试!');}, success: function (

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

使用PHP+MySql+Ajax+jQuery实现省市区三级联动功能 要求:写一个省市区(或者年月日)的三级联动,实现地区或时间的下拉选择. 实现技术:php ajax 实现:省级下拉变化时市下拉区下拉跟着变化,市级下拉变化时区下拉跟着变化. 使用chinastates表查询 Ajax加载数据 1.这是chinastates表 2.做一个简单php:Ajax_eg.php <!DOCTYPE html><html>    <head>        <meta c

AJAX省市区三级联动下拉列表实现 JAVA开发

转载自:http://blog.sina.com.cn/s/blog_a48af8c001011lx1.html 例子--District Picker            http://fengyuanchen.github.io/distpicker/ 此小程序的功能主要是采用异步请求方式从数据库中调取省市区信息显示到下拉列表: 代码如下: 建立数据库中的代码和一些配置文件信息就省略了,主要有JavaScript中的代码为: $(document).ready(function(){   

基于MVC3下拉列表联动(JQuery)

MVC3 上次项目中遇到一个需要多个下拉列表联动的操作,今天有空将实现方式整理以便以后参考. 要达到的效果是,点击一个下拉框,则另一个下拉框的值发生对应变化.如:选择中国,则另个一下拉框里显示中国各个省份. 传统的HTML方式比较简单,实际上基于MVC的实现方式也大同小异. 直接上代码: public class DP_Provice     {        public int proviceID { get; set; }        public string ProviceName

JAVA EE 项目经常使用知识 之AJAX技术实现select下拉列表联动的两种使用方法(让你真正理解ajax)

ajax 下拉列表联动的使用方法. ajax的定义: AJAX 是一种用于创建高速动态网页的技术. 通过在后台与server进行少量数据交换,AJAX 能够使网页实现异步更新.这意味着能够在不又一次载入整个网页的情况下,对网页的某部分进行更新. ajax效果的一个样例: 区域为空的时候,维护人情况: 选了一个区域后的情况:(选 舒城县 联带出来的维护人员 小刘) 一.原生态的js实现 XMLHttpRequest 是 AJAX 的基础 XMLHttpRequest 对象 全部现代浏览器均支持 X