asp.net使用ajax省市二级联动


<% @ Page language="c#" Codebehind="adduser.aspx.cs" AutoEventWireup="false" Inherits="Gongster.user.adduser" EnableEventValidation="false"  %>

DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
<HTML>
    
<HEAD>
        
<title>addusertitle>
        
<meta content="Microsoft Visual Studio .NET 7.1" name="GENERATOR">
        
<meta content="C#" name="CODE_LANGUAGE">
        
<meta content="JavaScript" name="vs_defaultClientScript">
        
<meta content="http://schemas.microsoft.com/intellisense/ie5" name="vs_targetSchema">
        
<script language="javascript">
         
//jb函数会根据不同的浏览器初始化个xmlhttp对象
         function jb()
         
{
            
var A=null
               
try 
               

                   A
=new ActiveXObject("Msxml2.XMLHTTP"); 
                }
 
            
catch(e)
            

                  
try 
                   

                      A
=new ActiveXObject("Microsoft.XMLHTTP"); 
                   }

             
catch(oc)
            

                     A
=null 
                   }
 
              }
 
           
if ( !&& typeof XMLHttpRequest != "undefined" ) 
            

               A
=new XMLHttpRequest() 
             }
 
           
return A 
         }

         
         
//下面Go函数是父列表框改变的时候调用,参数是选择的条目
         function Go(obj)
         
{
            
//得到选择框的下拉列表的value
           var svalue = obj.value;
            
//定义要处理数据的页面
            var weburl = "adduser.aspx?parent_id="+svalue;
            
//初始化个xmlhttp对象
            var xmlhttp = jb();
            
//提交数据,第一个参数最好为get,第三个参数最好为true
            xmlhttp.open("get",weburl,true);
           
// alert(xmlhttp.responseText);
            //如果已经成功的返回了数据
            xmlhttp.onreadystatechange=function()
            
{
              
if(xmlhttp.readyState==4)//4代表成功返回数据
               {
                  
var result = xmlhttp.responseText;//得到服务器返回的数据
                  //先清空ddlC的所有下拉项
                 document.getElementById("ddlC").length = 0;
                  
//给ddlC加个全部型号的,注意是Option不是option
                  document.getElementById("ddlC").options.add(new Option("请选择","0"));
                  
if(result!="")//如果返回的数据不是空
                  {
                     
//把收到的字符串按照,分割成数组
                     var allArray = result.split(",");
                    
//循环这个数组,注意是从1开始,因为收到的字符串第一个字符是,号,所以分割后第一个数组为空
                     for(var i=1;i<allArray.length;i++)
                     
{
                        
//在把这个字符串按照|分割成数组
                       var thisArray = allArray[i].split("|");
                        
//为ddlC添加条目
                       document.getElementById("ddlC").options.add(new Option(thisArray[1].toString(),thisArray[0].toString()));
                     }

                  }

               }

            }

            
//发送数据,请注意顺序和参数,参数一定为null或者""
            xmlhttp.send(null);
         }

        
script>
    
HEAD>
    
<body MS_POSITIONING="GridLayout">
        
<form id="Form1" method="post" runat="server">
            
<TABLE id="Table1" style="Z-INDEX: 101; LEFT: 8px; WIDTH: 656px; POSITION: absolute; TOP: 8px; HEIGHT: 620px"
                cellSpacing
="1" cellPadding="1" border="0">
                
<TR>
                    
<TD style="WIDTH: 71px; HEIGHT: 17px"><FONT face="宋体">所在地FONT>TD>
                    
<TD style="HEIGHT: 17px"><asp:dropdownlist id="ddlS" runat="server" onchange="Go(this)">asp:dropdownlist><asp:dropdownlist id="ddlC" runat="server">asp:dropdownlist>TD>
                    
<TD style="HEIGHT: 17px"><FONT face="宋体">FONT>TD>
                
TR>
                
<TR>
                    
<TD align="center" colSpan="3"><FONT face="宋体"><asp:button id="btnOk" runat="server" Text="确定并提交" Width="152px">asp:button>FONT>TD>
                
TR>
            
TABLE>
            
 
        
form>
    
body>
HTML>

 


后台代码


 



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  adduser : System.Web.UI.Page
{
    
private SqlConnection con;
    
private SqlDataAdapter da;
    
private DataSet ds;
    
protected void Page_Load(object sender, EventArgs e)
    
{
        
if (!IsPostBack)
        
{
            con
=new SqlConnection("server=.;database=evs;uid=sa;pwd=wq");
            da
=new SqlDataAdapter("select * from province",con);
            ds 
= new DataSet();
            da.Fill(ds, 
"province");
            ds.Tables[
"province"].DefaultView.Sort = "id ASC";
            ddlS.DataSource 
= ds.Tables["province"].DefaultView;
            ddlS.DataValueField 
= "id";
            ddlS.DataTextField 
= "province";
            ddlS.DataBind();
        }

        BindDrop();
    }

    
protected void Button1_Click(object sender, EventArgs e)
    
{
        Response.Write(ddlS.SelectedItem.Text);
        Response.Write(ddlC.SelectedItem.Text);
    }


    
protected void BindDrop()
    
{
        
string str = Request.QueryString["parent_id"];
        
string str1 = ddlS.SelectedValue;
        Response.Write(str1);
        
//如果str加个字符串!=原来的字符串则说明触发过ddlS的onchange事件
        if ((str + "abc"!= "abc")
        
{
            
//绑定 ddlC控件
            BindChild(str);//把传来的父DropDownList的value做为参数
        }

        
else
            BindParent(str1);
    }



    
protected void BindParent(string str)
    
{
        
//如果是第一次请求或者是刷新这个页面则根据ddlS的值来选择
        
//把参数转化成int
        int i = Convert.ToInt32(str);
        ddlC.Items.Clear();
        ddlC.Items.Add(
new ListItem("请选择""0"));
        
//得到数据库连接字符串
        string connStr = "server=.;database=evs;uid=sa;pwd=wq";
        
//初始化个conn对象
        SqlConnection conn = new SqlConnection(connStr);
        
//数据库语句
        string commStr = string.Format("select city,provid from city where provid={0}", i);
        
//建立数据库命令对象
        SqlCommand comm = new SqlCommand(commStr, conn);
        
//打开数据库
        conn.Open();
        
//执行命令
        SqlDataReader dr = comm.ExecuteReader();
        
//循环dr,给ddlS添加条目
        while (dr.Read())
        
{
            ddlC.Items.Add(
new ListItem(dr[0].ToString(), dr[1].ToString()));
            
//也可以这样
            
//ddlS.Items.Add(new ListItem(dr["phone_text"].ToString(),dr["phone_value"].ToString()));
        }

        ddlC.ClearSelection();
        ddlS.Items[
0].Selected = false;
        
//添加下面这话的意思是当点提交按钮提交窗体的时候第二个ddlC的状态能够得到保存
        ddlC.SelectedValue = Request.Form["ddlC"];
        dr.Close();
        conn.Close();
    }



    
protected void BindChild(string str)
    
{
        
//通过js给包括dropdownlist任何控件添加的内容不会被保存状态
        
//把参数转化成int
        int i = Convert.ToInt32(str);

        
string result = "";

        Response.Clear();
        
string connStr = "server=.;database=evs;uid=sa;pwd=wq";
        SqlConnection conn 
= new SqlConnection(connStr);
        SqlCommand comm 
= conn.CreateCommand();
        
string commStr = string.Format("select city,provid from city where provid={0}", i);
        comm.CommandText 
= commStr;
        conn.Open();
        SqlDataReader dr 
= comm.ExecuteReader();
        
while (dr.Read())
        
{
            result 
+= "," + dr[1].ToString() + "|" + dr[0].ToString();
        }

        Response.Write(result);
        Response.Flush();
        Response.Close();
        dr.Close();
        conn.Close();
    }

    
protected void Button1_Click1(object sender, EventArgs e)
    
{
        Response.Write(ddlS.SelectedItem.Text);
        Response.Write(ddlC.SelectedItem.Text);
    }

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值