您的位置:首页 > 编程语言 > ASP

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

2007-10-16 14:42 555 查看
aspx页面




<%...@ 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>adduser</title>


<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 ( !A && 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);


}


}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: