js 实现二级联动

来源:互联网 发布:硕鼠mac 版下载 编辑:程序博客网 时间:2024/05/01 03:53

前台

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

<html xmlns="http://www.w3.org/1999/xhtml">
<head id="Head1" runat="server">
    <title>无标题页</title>

</head>

<body style="text-align:center;">
  
    <form id="form1" runat="server">     

 

<table cellpadding=0 cellspacing=0 border=0>

<tr><td align=left width=100%>
    <asp:DropDownList ID="ddlDepartMent" runat="server" >
    </asp:DropDownList>
    <asp:DropDownList ID="ddlEquipment" runat="server">
    </asp:DropDownList>
</td></tr>

</table>

</body>

 

<script language="javascript" type="text/javascript">
   
    document.body.onload=function()
   {
   document.getElementById("ddlEquipment").options[0]=new Option("请先选择","0");
  
     }
     function send_request()
    {
          //XmlHttpRequest并不是一个标准的产物,而是微软最初提出并得到很多浏览器支持的对象,因此其创建方法也是因浏览器而异的
          //创建XmlHttpRequest对象
          http_request=false;
          if(window.XmlHttpRequest)
          {
                 //非IE浏览器
                 http_request=new XmlHttpRequest();
          }
          else if(window.ActiveXObject)
          {
                 //微软IE浏览器
                 try
                 {
                       //较新版本的IE浏览器
                       http_request=new ActiveXObject("Msxml2.XMLHTTP");
                 }
                 catch(e)
                 {
                       try
                       {
                         http_request=new ActiveXObject("Mircosoft.XMLHTTP");
                       }
                       catch(e)
                       {}
                 }
          }
          else
          {
                window.alert("你的浏览器版本已经严重过时,请升级后早做操作!");
                return false;
          }
          //readyState属性表示XMLHTTP的请求的当前状态,它等于4时表示请求已完成。
          //onreadystatechange表示XMLHttpRequest对象中readyState改变时触发这个事件。        
          http_request.onreadystatechange=Getcity;
          //创建htpp请求
          //open方法表示打开一个URL连接
          http_request.open("get","GetCity.ashx?ProvinceType="+document.getElementById('ddlDepartMent').value+"&PSectionCode="+document.getElementById('txtPse').value,true); 
          //发送上面创建的http请求
          http_request.send(null);
    }

     function Getcity()
    {

        if(http_request.readyState==4)//请求完成,发送成功
        {
            //status属性表示HTTP请求的返回状态码,因为XMLHTTP也是请求的一个网页,所以它的含义和传统网页相同,如:200表示正常返回;404表示找不到网页;500表示服务器内部错误。
            if(http_request.status==200)//交易成功
            {
                //在请求正常完成后,responseText表示以文本形式返回请求页面的内容
                 if(http_request.responseText!="")
                 {
                     //new Array(7),可以把7改成一个尽可能大的值,不如说选项中最大的值
                     var myarr=new Array(500);var ResponseText=http_request.responseText;var pos=ResponseText.indexOf(";");var i=0;
                     while(pos!=-1)
                     {
                     
                       var myText=ResponseText.substring(0,pos);
                       if(myText!="")
                       {
                           myarr[i]=myText;
                           i++;      
                       }
                       ResponseText=ResponseText.substr(pos+1);
                       pos=ResponseText.indexOf(";");
                       continue;
                          }
                     for(var n=0;n<i;n++)
                     {
                     var value1=myarr[n].substring(0,myarr[n].indexOf("_"));
                     var txt1=myarr[n].substr(myarr[n].indexOf("_")+1);
                     document.getElementById("ddlEquipment").options[n]=new Option(txt1,value1);
                     document.getElementById("ddlEquipment").length=i;
                       } 
                 }
                 else
                 {
                     document.getElementById("ddlEquipment").options[0]=new Option("请先选择","0");
                     document.getElementById("ddlEquipment").length=1;
                 }               
            }
        }
    }
    </script>

</html>

后台:

using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using System.Text;
public partial class SetDemo : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
      {
               
        if (!IsPostBack)
        {

               //省份
                ddlDepartMent.Items.Clear();
                ddlDepartMent.Items.Add(new ListItem("请先选择", "0"));
                ddlDepartMent.Items.Add(new ListItem("湖北省", "HUB"));
                ddlDepartMent.Items.Add(new ListItem("河南省", "HEN"));
                this.ddlDepartMent.Attributes.Add("onchange", "send_request()");
        }  
    }  
}

 

 

新建一般处理程序:

WebHandler Language="C#" Class="GetCity" %>

using System;
using System.Web;
using System.Data.SqlClient;
public class GetCity : IHttpHandler {

    public void ProcessRequest(HttpContext context)
    {
        context.Response.ContentType = "text/plain";
        string CityResult = "";
        string strsql = "Select CityName,Id from InfoCity Where PType='"+type+"'";
        string type = context.Request.QueryString["ProvinceType"].ToString();

        sqlconnection con=new sqlconnection();

        con.open();

      SqlCommand com=new sqlcommand(con,strsql);

        
      SqlDataReader reader = com.ExecuteReader();

        while (reader.Read())
        {
            CityResult += reader[1] +"_"+ reader[0] + ";";
        }
        context.Response.Write(CityResult);
        reader.Close();
   
    }

    public bool IsReusable
    {
        get
        {
            return false;
        }
    }


 

原创粉丝点击