本文實(shí)例講述了jQuery+Asp.Net實(shí)現(xiàn)省市二級(jí)聯(lián)動(dòng)功能的方法。分享給大家供大家參考,具體如下:
頁(yè)面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三級(jí)聯(lián)動(dòng)</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() {//加載完成后綁定省份數(shù)據(jù)$.getJSON("Default.aspx", function(data) { //data的數(shù)據(jù)格式[{"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; //先清掉縣下拉框的的數(shù)據(jù)document.getElementById("selCity").options.length=1; //先清掉城市下拉框的的數(shù)據(jù)$.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; //先清掉縣下拉框的的數(shù)據(jù)$.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"><div>三級(jí)聯(lián)動(dòng):<select id="selProvince"><option value="選擇省份">==選擇省份==</option></select> <select id="selCity"><option>==選擇城市==</option></select>& amp;nbsp; <select id="selArea"><option>==選擇縣==</option></select></div></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}/""; //構(gòu)造格式字符串 {"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(); //主要用于識(shí)別是查詢city還是area表 string fid = context.Request.QueryString["fid"].ToString(); //城市或區(qū)域的父ID string sql = "select * from " + type + " where father='" + fid + "'"; //構(gòu)造數(shù)據(jù)的類型[{"text":"南昌","value":"0001"},{"text":"上饒","value":"0002"}] //string strTemp = "{/"text/":/"{0}/",/"value/":/"{1}/"}";//這里犯了個(gè)錯(cuò)誤:直接這樣構(gòu)造會(huì)出錯(cuò),因?yàn)榇罄ㄌ?hào)里又有格式大括號(hào),解析會(huì)出錯(cuò) string strTemp = "/"text/":/"{0}/",/"value/":/"{1}/""; //構(gòu)造格式字符串 {"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 + "},"); //兩邊的大括號(hào)格式化后加上 } reader.Close(); string json = sb.ToString(); context.Response.Write("[" + json.Substring(0, json.Length - 1) + "]"); //Substring的作用是去掉最后一個(gè)'逗號(hào)' } } public bool IsReusable { get { return false; } }}
希望本文所述對(duì)大家asp.net程序設(shè)計(jì)有所幫助。
新聞熱點(diǎn)
疑難解答
圖片精選