dropdownlist 二级联动  第二级不能保存数据,数据读取成功后,无论选择哪个,都只获取数据库里的第一条信息!

解决方案 »

  1.   

    看你的的代码
    要是ajax实现的,需要使用Request.Form得到
      

  2.   

    http://blog.csdn.net/xianfajushi/article/details/5928136
      

  3.   


    <%@ Page Language="C#" AutoEventWireup="true"  CodeFile="Default.aspx.cs" EnableEventValidation="false"  Inherits="_Default" %><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml" >
    <head runat="server">
        <title><%= pagetitle %></title>
     <script language="javascript">
    // XmlHttp是什么? 
    //最通用的定义为:XmlHttp是一套可以在Javascript、VbScript、Jscript等脚本语言中通过http协议传送或从接收XML及其他数据的一套API。XmlHttp最大的用处是可以更新网页的部分内容而不需要刷新整个页面。 
    //来自MSDN的解释:XmlHttp提供客户端同http服务器通讯的协议。客户端可以通过XmlHttp对象(MSXML2.XMLHTTP.3.0)向http服务器发送请求并使用微软XML文档对象模型Microsoft® XML Document Object Model (DOM)处理回应。
             //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 = "Default.aspx?parent_id="+svalue;
                //初始化个xmlhttp对象
                var xmlhttp = jb();
                //提交数据,第一个参数最好为get,第三个参数最好为true(表示异步,false表示同步)
                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>
            <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" OnClick="btnOk_Click"></asp:button></FONT></TD>
                    </TR>
                    <tr>
                    <td>
                        <asp:Label ID="Label1" runat="server" Text="Label"></asp:Label>
                    </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 _Default : System.Web.UI.Page 
    {
        private SqlConnection con;
        private SqlDataAdapter da;
        private DataSet ds;
        protected string pagetitle;     //网页标题     protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                con=new SqlConnection("server=.;database=NewsData;uid=sa;pwd=123");
                da = new SqlDataAdapter("select * from Area1", con);
                ds = new DataSet();
                da.Fill(ds, "area");
                ds.Tables["area"].DefaultView.Sort = "ClassID ASC";
                ddlS.DataSource = ds.Tables["area"].DefaultView;
                ddlS.DataValueField = "ClassID";
                ddlS.DataTextField = "ClassName";
                ddlS.DataBind();
            }
            BindDrop();        pagetitle = Label1.Text; 
        }
        protected void Button1_Click(object sender, EventArgs e)
        {
            Response.Write(ddlS.SelectedItem.Text);
            Response.Write(ddlC.SelectedItem.Text);
        }    protected void BindDrop()
        {
            //ddlS.Attributes.Add("onchange", "Go(this)");
            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=NewsData;uid=sa;pwd=123";
            //初始化个conn对象
            SqlConnection conn = new SqlConnection(connStr);
            //数据库语句
            string commStr = string.Format("select ClassID,ClassName from Area where ClassID={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[1].ToString(), dr[0].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=NewsData;uid=sa;pwd=123";
            SqlConnection conn = new SqlConnection(connStr);
            SqlCommand comm = conn.CreateCommand();
            string commStr = string.Format("select ClassName,ClassID from Area where ClassID={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 btnOk_Click(object sender, EventArgs e)
        {
            //Response.Write(ddlS.SelectedItem.Text);
            //Response.Write(ddlC.SelectedItem.Text);
            Label1.Text = ddlS.SelectedItem.Text + "<br>" + ddlC.SelectedItem.Text;
        }
    }
      

  4.   

    http://download.csdn.net/detail/tys101582/1388836
    省市区三级联动C#源代码(含全国各地市数据库)无刷新非ASMX服务
    你可以参考一下这个。
      

  5.   

    省市区三级联动C#源代码(含全国各地市数据库)无刷新非ASMX服务
    http://download.csdn.net/detail/tys101582/1388836
    这个你可以用到,可以学习一下