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); }}