• 技术文章 >后端开发 >C#.Net教程

    Asp.Net+jQuery如何实现省市二级联动功能的方法详解

    黄舟黄舟2017-06-04 09:49:19原创1200
    这篇文章主要介绍了jQuery+Asp.Net实现省市二级联动功能的方法,涉及asp.net数据库读取与字符串转换相关操作技巧,需要的朋友可以参考下

    本文实例讲述了jQuery+Asp.Net实现省市二级联动功能的方法。分享给大家供大家参考,具体如下:

    页面html:

    <%@ Page Language="C#" AutoEventWireup="true" CodeFile="ddlAjax.aspx.cs" Inherits="ThreeAjaxDrop_ddlAjax" %>
    <!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>DropDownList三级联动</title>
    <style type="text/css">
    *{margin:0; padding:0;}
    body{font-size:12px; font-family:Arial @宋体;}
    </style>
    <script type="text/javascript" src="../js/jquery-1.4.min.js"></script>
    <script type="text/javascript">
    $(document).ready(function() {
    //加载完成后绑定省份数据
    $.getJSON("Default.aspx", function(data) { //data的数据格式[{"text":"北京","value":"0001"},{"text":"江西","value":"0031"}]
    //alert(data[0].text+"|"+data[0].value);
    $.each(data, function(index, value) {
    //alert(value.text + "|" + value.value);
    $("#selProvince").append("<option value='" + value.value + "'>" + value.text + "</option>");
    });
    });
    //省份的值改变,则要绑定出城市下拉框
    $("#selProvince").change(function(){
    document.getElementById("selArea").options.length=1; //先清掉县下拉框的的数据
    document.getElementById("selCity").options.length=1; //先清掉城市下拉框的的数据
    $.getJSON("HandlerDropDownAjax.ashx",{"type":"city","fid":$(this).val()},function(data){
    $.each(data, function(index, value) {
    $("#selCity").append("<option value='" + value.value + "'>" + value.text + "</option>");
    });
    });
    });
    //城市下拉框的值改变
    $("#selCity").change(function(){
    document.getElementById("selArea").options.length=1; //先清掉县下拉框的的数据
    $.getJSON("HandlerDropDownAjax.ashx",{"type":"area","fid":$(this).val()},function(data){
    $.each(data, function(index, value) {
    $("#selArea").append("<option value='" + value.value + "'>" + value.text + "</option>");
    });
    });
    });
    });
    </script>
    </head>
    <body>
    <form id="form1" runat="server">
    <p>
    三级联动:<select id="selProvince">
    <option value="选择省份">==选择省份==</option>
    </select> <select id="selCity"><option>==选择城市==</option></select>& amp;nbsp; <select id="selArea"><option>==选择县==</option></select>
    </p>
    </form>
    </body>
    </html>

    asp.net部分:

    (1)Default.aspx.cs

    public partial class ThreeAjaxDrop_Default : System.Web.UI.Page
    {
      protected void Page_Load(object sender, EventArgs e)
      {
        string sql = "select * from province";
        string strTemp = "\"text\":\"{0}\",\"value\":\"{1}\""; //构造格式字符串 {"text":"北京","value":"00001"}
        StringBuilder sb = new StringBuilder();
        OleDbDataReader reader = OleDBHelper.ExecuteReader(sql);
        while (reader.Read())
        {
          string str1 = string.Format(strTemp, reader["province"].ToString(), reader["provinceID"].ToString());
          sb.Append("{"+str1+"},");
        }
        reader.Close();
        string json = sb.ToString();
        Response.Write("["+json.Substring(0,json.Length-1)+"]");
      }
    }

    (2)HandlerDropDownAjax.ashx

    public class HandlerDropDownAjax : IHttpHandler {
      public void ProcessRequest (HttpContext context) {
        if (context.Request.QueryString["type"] != null && context.Request.QueryString["fid"] != null)
        {
          string type = context.Request.QueryString["type"].ToString(); //主要用于识别是查询city还是area表
          string fid = context.Request.QueryString["fid"].ToString();   //城市或区域的父ID
          string sql = "select * from " + type + " where father='" + fid + "'";
          //构造数据的类型[{"text":"南昌","value":"0001"},{"text":"上饶","value":"0002"}]
          //string strTemp = "{\"text\":\"{0}\",\"value\":\"{1}\"}";//这里犯了个错误:直接这样构造会出错,因为大括号里又有格式大括号,解析会出错
          string strTemp = "\"text\":\"{0}\",\"value\":\"{1}\""; //构造格式字符串 {"text":"北京","value":"00001"}
          StringBuilder sb = new StringBuilder();
          OleDbDataReader reader = OleDBHelper.ExecuteReader(sql);
          while (reader.Read())
          {
            string str1 = string.Format(strTemp, reader[2].ToString(), reader[1].ToString());
            sb.Append("{" + str1 + "},"); //两边的大括号格式化后加上
          }
          reader.Close();
          string json = sb.ToString();
          context.Response.Write("[" + json.Substring(0, json.Length - 1) + "]"); //Substring的作用是去掉最后一个'逗号'
        }
      }
      public bool IsReusable {
        get {
          return false;
        }
      }
    }

    php入门到就业线上直播课:查看学习

    以上就是Asp.Net+jQuery如何实现省市二级联动功能的方法详解的详细内容,更多请关注php中文网其它相关文章!

    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。

    前端(VUE)零基础到就业课程:点击学习

    清晰的学习路线+老师随时辅导答疑

    快捷开发Web应用及小程序:点击使用

    支持亿级表,高并发,自动生成可视化后台。

    专题推荐:jQuery Asp.Net 二级联动
    上一篇:详细介绍Asp.Net Core MVC项目实现多语言的示例代码 下一篇:自己动手写 PHP MVC 框架(40节精讲/巨细/新人进阶必看)

    相关文章推荐

    • ❤️‍🔥共22门课程,总价3725元,会员免费学• ❤️‍🔥接口自动化测试不想写代码?• 解决asp.net中“从客户端中检测到有潜在危险的Request.Form值”的错误• asp.net 图片验证码的HtmlHelper• ASP.NET使用Ajax如何返回Json对象的方法具体介绍• SUNWEN教程之----C#进阶(二)• SUNWEN教程之----C#进阶(三)
    1/1

    PHP中文网