这里是例子:http://www.cnblogs.com/singlepine/archive/2006/05/10/270615.html
 省 id value    地州   id  value  shengid      区   id   value     shengid     dizhouid
     1  广东            1   广州       1              1    罗湖市        1            2
      2  四川            2   深圳       1              2    福田市        1            2
                      1   成都       2              1    绵阳市        2            2
                      2   绵阳      2              2    文川          2            2
这里省、地州、区。3个listbox
可例子上的区条件好像错误了哦。。例子上是根据dizhouid条件直接查询地区,结果不对。
应该根据 shengid  dizhouid这2个条件才能确认是哪个区???那按照例子上的方法如何实现呢。
我JS不熟悉 例子看的不太懂。。请各位大虾帮帮

解决方案 »

  1.   

    listbox实现??我是用DropDownList,写WebService,用CascadingDropDown,就可以实现了!
      

  2.   

    我用dropdownlist通过xmlhttp调用ashx实现,原理差不多我的数据库格式110000河北省
    110100石家庄
    110101石家庄XX区
      

  3.   

    xmlhttp调用ashx实现 好像例子就这样做的。可我的问题是最后一个listbox的显示是根据前2个listbox所选的做条件显示出来。这个怎么搞 根据上面我给出的例子
      

  4.   

    修改这两个函数,原来只传进一个参数,改为传两个参数(shengid和dizhouid)
    下面是主要得改的地方,自己再处理下就行了~
    //以XML求取ListBox3的数据
    function XmlPost3(obj)
    { 
      var svalue = obj.value;
     var webFileUrl = "?cityid=" + svalue;//得修改异步请求的参数
    //...
    }
    private void down3_bind(string id)
    {
    string sql = "select areaID,area from area where father = '" + id + "'";//得修改SQL语句
    //...
    }
      

  5.   

    //以XML求取ListBox3的数据
    function XmlPost3(obj1,obj2)
    { 
      var shengid= obj1.value;//省ID
      var dizhouid=obj2.value;//地州ID
     var webFileUrl = "?shengid=" + shengid+"&dizhouid="+dizhouid;//得修改异步请求的参数
    //...
    }
    然后后台接收参数修改down3_bind()方法里的SQL语句。。
      

  6.   

    后台
    this.ListBox2.Attributes.Add("onchange","XmlPost3(this);"); 
    if(cityid != "")
              {
                this.down3_bind(cityid);
              }                                这2处怎么改呢?
      

  7.   

    this.ListBox2.Attributes.Add("onchange","XmlPost3(this);");  这里this只什么意思?
      

  8.   

    参考:http://www.cnblogs.com/luck0235/articles/1072602.html
      

  9.   

                this.ListBox2.Attributes.Add("onchange", "XmlPost3(this,document.getElementById('<%=ListBox3.ClientID %>'))");              //this表示当前对象,得再传进ListBox3。。            this.down3_bind(shengid, dizhouid); //得用两个参数拼SQL语句查地区。。
      

  10.   

    function onSelectChange()
    {
                var array = ('<%=ToChangeSelectIDs %>').split(',');
                var gv = document.getElementById('<%= GridView1.ClientID %>');
                var mySelect = document.getElementById('<%= FirstSelectClientID %>');
                
                var selIndex = mySelect.selectedIndex;
               
                
                var inputs = gv.getElementsByTagName("select");
                          
                for(var i = 0; i < inputs.length; i++)
                {
                        for(var j = 0; j < array.length; j++)
                        {   
                            if(inputs[i].id == array[j]) 
                            {                            inputs[i].options[selIndex].selected = true;
                                break;
                            }
                       }
                }
    }
      

  11.   

    C# code
    private int i = 0;
        private string _firstSelectClientID;
        protected string FirstSelectClientID  //存第一行第一列DropDownList的ClientID
        {
            get { return _firstSelectClientID; }
            set { _firstSelectClientID = value; }
        }
        private string _toChangeSelectIDs; //还按原来,考虑多列DropDownList的情况,这里存要同步的DropDownList的ClientID集合,用,分割。
        protected string ToChangeSelectIDs
        {
            get { return _toChangeSelectIDs; }
            set { _toChangeSelectIDs = value; }
        }
        protected void Page_Load(object sender, EventArgs e)
        {    }
        protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
        {
            if (e.Row.RowType == DataControlRowType.DataRow)
            {
                DropDownList ddl = (DropDownList)e.Row.FindControl("DropDownList1");
                if (i++ > 0)
                {
                    ToChangeSelectIDs += ddl.ClientID + ",";
                }
                else
                {
                    ddl.Attributes.Add("onchange", "onSelectChange()");
                    FirstSelectClientID = ddl.ClientID;
                }        }
        }