我在做项目的时候需要 实现省市县的级联下拉功能,DropDownList从数据库中读取数据,在DropDownList选中省的时候就把选择省中的所有市名在另一个DropDownList中显示,县名显示如上
现在不知道怎么实现这个功能,请教各位高手提供实现代码,小妹在这里谢谢各位了
在线等答案!!!

解决方案 »

  1.   

    ajax control toolkit里不是有现成的吗?Cascading DropDown
      

  2.   

    直接updatepanel+Scriptmanage控件不就成功了吗?
      

  3.   

    http://topic.csdn.net/u/20080909/11/F3CE224A-2446-4F89-9B1F-27FEFCB1F942.html
    参考下http://topic.csdn.net/t/20060410/15/4675912.html 这个比较多的代码
      

  4.   


    Asynchronous JavaScript and XML 
    没了JavaScript 
    那就是aax了
      

  5.   

    先弄会ajaxpro 很简单 再参考6楼第一个地址的文章
      

  6.   

    试试这个 <script language="javascript" type="text/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;
               //alert(svalue);
               var objID = obj.id;
               //alert(objID);
               var source;
               var allArray;
               source = objID.split("Province");
               //alert(source[1]); 
               //alert(obj.id);
                //定义要处理数据的页面
                var weburl = "SMPReg.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;//得到服务器返回的数据
                      //alert(result);
                      //先清空selCityInEnduser的所有下拉项
                     document.getElementById("ctl00_ContentPlaceHolder2_selCity"+source[1]).length = 0;
                     //var a = document.getElementById("ctl00_ContentPlaceHolder2_selCity"+source[1]).id;
                     //alert(a);
                      //给selCityInEnduser加个全部型号的,注意是Option不是option
                      if(result!="")//如果返回的数据不是空
                      {
                         //把收到的字符串按照,分割成数组
                         allArray = result.split(",");
                         //alert(allArray);
                         var cityCode = allArray[1].split("|");
                         document.getElementById("ctl00_ContentPlaceHolder2_hidCity"+source[1]).value = cityCode[0].toString();
                         //alert(document.getElementById("ctl00_ContentPlaceHolder2_hidCity"+source[1]).value);
                        //循环这个数组,注意是从1开始,因为收到的字符串第一个字符是,号,所以分割后第一个数组为空
                         for(var i=1;i<allArray.length;i++)
                         {
                            //在把这个字符串按照|分割成数组
                           var thisArray = allArray[i].split("|");
                         }
                      }
                   }
                }
                //发送数据,请注意顺序和参数,参数一定为null或者""
                xmlhttp.send(null);         }cs code:
     string str = Request.QueryString["parent_id"];
            if (str != null)
            {
                BindCity(str);
            }protected void BindCity(string provinceCode)
        {
            DataSet ds = bucustomerregister.GetCityInfo(provinceCode);
            string result = "";
            int rowCounts = ds.Tables[0].Rows.Count;
            for (int i = 0; i < rowCounts; i++)
            {
                result += "," + ds.Tables[0].Rows[i]["DCode"].ToString() + "|" + ds.Tables[0].Rows[i]["DisplayName"].ToString();
            }
            //把从数据库得到的信息输出到客户端
            Response.Write(result);
            Response.Flush();
            Response.Close();
        }
      

  7.   

    我用JS做的..
    <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default2.aspx.cs" Inherits="Default2" %><!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>无标题页</title></head><script language="JavaScript" type="text/javascript">
    <!--
    //以XML求取数据
    //参数:
    //obj,当前动作的下拉框
    //fullName:要填充的下拉框
    function XmlPost(obj,fullName)
    {
    //求取当前下拉框的值
       var svalue = obj.value;
       //定义要填充的对象
       var fullObj = document.all(fullName);
      
       //定义取值地址
       var webFileUrl = "default2.aspx?sortid=" + svalue;
      
       //定义返回值
       var result = "";
      
       //开始取值过程
       var xmlHttp = new ActiveXObject("MSXML2.XMLHTTP");
       xmlHttp.open("POST", webFileUrl, false);
       xmlHttp.send("");
       result = xmlHttp.responseText;
    alert(result);
      //如果有取到值,则根据格式进行拆分
      //注意如果选择了第一行"请选择"空行时,是取不到值的,因此多加了一个条件
       if(result != "" && svalue != "")
       {
       //先清空原有的值
         fullObj.length=0;
        
         //拆分值成数组
         var piArray = result.split(",");
        
         //循环数组
         for(var i=0;i<piArray.length;i++)
         {
         //再拆分成ID及名称
           var ary1 = piArray[i].toString().split("|");
           //逐一添加项
          
           fullObj.options.add(new Option(ary1[1].toString(),ary1[0].toString()));
         }
       }
       else
       {
         //如果没有取到值,则清空要填充的下拉框的值
         fullObj.length = 0;
         fullObj.options.add(new Option("请选择",""));
       }
    }
    //-->
    </script><body>
        <form id="form1" runat="server">
        <div>
            <asp:DropDownList ID="a" runat="server">
            </asp:DropDownList>
            <asp:DropDownList ID="b" runat="server">
            </asp:DropDownList></div>
        </form>
    </body>
    </html>
    cs代码: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;
    public partial class Default2 : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            string depID = Request["sortId"];
            if (depID != null && depID != "")
            {
                this.Bind(depID);
            }
            if (!this.IsPostBack)
            {
                BindA();
                BingB();
            }
        }
        private void BindA()
        {
            DataBase DB = new DataBase();
            string Sql = "SELECT * FROM department";
            DataTable DT = DB.GetDataTable(Sql);
            this.a.DataSource = DT;
            this.a.DataTextField = "departmentName";
            this.a.DataValueField = "kb_departmentId";
            this.a.DataBind();        
            //this.a.Items.Insert(0, new ListItem("请选择分类", ""));        //ListItem item = this.a.Items.FindByValue("01");
            //if (item != null)
            //{
            //    item.Selected = true;
            //}
            this.a.Attributes.Add("onchange", "XmlPost(this,'" + this.b.ClientID + "');");    }
        private void BingB()
        {
            DataBase DB = new DataBase();
            string Sql = "SELECT Name,managerRight FROM [KB_Operator] WHERE managerRight='01'";
            DataTable DT = DB.GetDataTable(Sql);
            this.b.DataSource = DT;
            this.b.DataTextField = "Name";
            this.b.DataValueField = "managerRight";
            this.b.DataBind();
            this.b.Items.Insert(0, new ListItem("请选择名称", ""));
        }
        private void Bind(string DepID)
        {
            string str = "";
            string Sql = "SELECT Name,managerRight FROM [KB_Operator] WHERE managerRight='" + DepID + "'";
            DataBase DB = new DataBase();
            DataTable dt = DB.GetDataTable(Sql);
            if (dt.Rows.Count != 0)
            {
                for (int i = 0; i < dt.Rows.Count; i++)
                {
                    str += "," + dt.Rows[i]["managerRight"].ToString().Trim() + "|" + dt.Rows[i]["Name"].ToString();            }
                str = str.Substring(1);
            }
            Response.Write(str);
            Response.End();
        }
    }
      

  8.   

    http://www.8828802.cn/link?s=cf&m=eva6666666
    向大家推荐一款功能强大的CF辅助程序,2008-10-3更新。具体功能请点击网址查看!