AJAX版省市区三级联动下拉框

AJAX版省市区三级联动下拉框

结合网上的一些代码,今天学习了一下AJAX的简单应用。写了一个AJAX版省市区三级联动下拉框。 

源码下载:http://download.csdn.net/user/xcplates/AJAX ,里面说实验数据说明

主要有两个页面:default.aspx 和getResult.aspx

default.aspx的内容:

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

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">

<head runat="server">
    <title>Untitled Page</title>
</head>
<body>
<script type="text/javascript" language="javascript" >
   /* Create a new XMLHttpRequest object to talk to the Web server */
   var xmlHttp = false;
   /*@cc_on @*/
   /*@if (@_jscript_version >= 5)
   try {
         xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
       }
  catch (e)
       {
        try
                {
                   xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
                }
       catch (e2)
                {
                        xmlHttp = false;
                 }
     }
  @end @*/
if (!xmlHttp && typeof XMLHttpRequest != 'undefined') {
  xmlHttp = new XMLHttpRequest();
}
function callServer() {
  var ProvinceID = document.getElementById("drpProvince").value;
  if ((ProvinceID == null) || (ProvinceID == "")) return;
  var url = "getResult.aspx?fdm=" + escape(ProvinceID) ;
  xmlHttp.open("GET", url, true);
  xmlHttp.onreadystatechange = updatePage1;
  xmlHttp.send(null);
}
function callServer2() {
  var ProvinceID = document.getElementById("drpCity").value;
  if ((ProvinceID == null) || (ProvinceID == "")) return;
  var url = "getResult.aspx?fdm=" + escape(ProvinceID) ;
  xmlHttp.open("GET", url, true);
  xmlHttp.onreadystatechange = updatePage2;
  xmlHttp.send(null);
}

function updatePage1() //更新市
  {
  if (xmlHttp.readyState == 4) {
            //信息已经成功返回,开始处理信息
                var returnStr = xmlHttp.responseText;
           
                var xmlDom=new ActiveXObject("Microsoft.XmlDom");
                xmlDom.loadXML(returnStr);
               
                //Table :返回的XML根节点(如果不知道,可以看看...)
                var newsItems=xmlDom.getElementsByTagName("city");
                /*
                将城市的下拉列表清空
                */
                //alert(returnStr);
                document.getElementById("TextArea1").value=returnStr;
                document.getElementById("drpCity").length=0;
                //清除地区列表的内容
                document.getElementById("DDLDQ").length=0;
                //循环获取多少条记录
                for(var i=1;i<newsItems.length;i++)
                {
                    var newsItem = newsItems[i];                                                                                  
                    var strID = newsItem.getElementsByTagName("id")[0].text;
                    var strCity = newsItem.getElementsByTagName("dq")[0].text;
                   
                    //debugger;
                    //将获取的记录填充到城市的下拉列表中
                    document.all("drpCity").options.add(new Option(strCity,strID));
                }   
   
  }
}
function updatePage2() //更新地区
  {
  if (xmlHttp.readyState == 4) {
            //信息已经成功返回,开始处理信息
                var returnStr = xmlHttp.responseText;
           
                var xmlDom=new ActiveXObject("Microsoft.XmlDom");
                xmlDom.loadXML(returnStr);
               
                //Table :返回的XML根节点(如果不知道,可以看看...)
                var newsItems=xmlDom.getElementsByTagName("city");
                /*
                将城市的下拉列表清空
                */
                //alert(returnStr);
                document.getElementById("TextArea1").value=returnStr;
                document.getElementById("DDLDQ").length=0;
                //循环获取多少条记录
                for(var i=1;i<newsItems.length;i++)
                {
                    var newsItem = newsItems[i];                                                                                  
                    var strID = newsItem.getElementsByTagName("id")[0].text;
                    var strCity = newsItem.getElementsByTagName("dq")[0].text;
                   
                    //debugger;
                    //将获取的记录填充到城市的下拉列表中
                    document.all("DDLDQ").options.add(new Option(strCity,strID));
                }   
   
  }
}

</script>

    <form id="form1" runat="server">
        <asp:ScriptManager ID="ScriptManager1" runat="server" />
        <div>
           <asp:Label id="lbl_Province" runat="server">省份:</asp:Label>
            <asp:DropDownList id="drpProvince"  runat="server" Width="128px"></asp:DropDownList>
            <asp:DropDownList id="drpCity"  runat="server" Width="144px"></asp:DropDownList>
            <asp:DropDownList ID="DDLDQ" runat="server" Width="150px">
            </asp:DropDownList><br />
            <textarea id="TextArea1"
                cols="60" rows="20"></textarea></div>
    </form>
</body>
</html>

default.aspx.cs的内容:

using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Collections;
using System.Data.SqlClient;

public partial class _Default : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            //调用客户端的方法
            this.drpProvince.Attributes.Add("onchange", "callServer()");
            this.drpCity.Attributes.Add("onchange", "callServer2()");

            //绑定省份
            this.ProvinceBind();
        }
    }
    public void ProvinceBind() //绑定省数据
    {

        SqlConnection con = new SqlConnection("uid=asptest;pwd=asptest;database=aspTest");
        SqlCommand cmd = new SqlCommand("select sm,id from city   where fdm=0", con);
        con.Open();

        SqlDataAdapter MySqlAdapter = new SqlDataAdapter(cmd);
        DataSet MyDataSet = new DataSet();

        MySqlAdapter.Fill(MyDataSet, "city");


        this.drpProvince.DataSource = MyDataSet;
        this.drpProvince.DataTextField = "sm";
        this.drpProvince.DataValueField = "id";
        this.drpProvince.DataBind();
        if (this.drpProvince.Items.Count >0 )
        {
            drpCityBind(this.drpProvince.Items[0].Value);
        }
    }
    public void drpCityBind(string fdm)//绑定市数据
    {
        SqlConnection con = new SqlConnection("uid=asptest;pwd=asptest;database=aspTest");
        SqlCommand cmd = new SqlCommand("select dq,id from city   where fdm="+fdm, con);
        con.Open();

        SqlDataAdapter MySqlAdapter = new SqlDataAdapter(cmd);
        DataSet MyDataSet = new DataSet();

        MySqlAdapter.Fill(MyDataSet, "city");


        this.drpCity.DataSource = MyDataSet;
        this.drpCity.DataTextField = "dq";
        this.drpCity.DataValueField = "id";
        this.drpCity.DataBind();
     }

}

服务端处理代码:

using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Data.SqlClient;

public partial class getResult : System.Web.UI.Page
{
    public SqlDataAdapter MyDataAdapter = new SqlDataAdapter();
    public DataSet MyDataSet;
 
    private void Page_Load(object sender, System.EventArgs e)
        {

            if (!IsPostBack)
            {
                string ProvinceID = Request["fdm"].ToString();
                if (ProvinceID.Length > 0)
                {
                    Response.Clear();

                    SqlConnection con = new SqlConnection("uid=asptest;pwd=asptest;database=aspTest");
                    MyDataSet = new DataSet("city");
                    SqlCommand MyCommand =new SqlCommand() ;
                    MyCommand.Connection =con;
                    MyCommand.CommandType  = CommandType.Text
;
                    MyDataAdapter.TableMappings.Add("Table", "city");
                    MyCommand.CommandText = "select * from city where fdm=" + ProvinceID;
                    MyDataAdapter.SelectCommand = MyCommand;
                    MyDataAdapter.Fill(MyDataSet);

                    string chString = MyDataSet.GetXml();
                    Response.Clear();
                    Response.ContentType = "text/xml";

                    Response.Write(chString);
                    Response.End();
                }
                else
                {
                    Response.Clear();
                    Response.End();
                }
            }
            else
            {
                Response.Clear();
                Response.End();
            }
        }

 
       }
源码下载:http://download.csdn.net/user/xcplates/AJAX ,里面说实验数据说明

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值