页面中有一个dropdownlist二级联动和js的二级联动,当autopostback=true时,点击dropdownlist后,下拉单city总是变为“请选择城市”请大家帮我看看,应该怎样解决这个问题。谢谢。js代码如下
<script language="JavaScript" type="text/javascript">
     //定义了城市的二维数组,里面的顺序跟省份的顺序是相同的。通过selectedIndex获得省份的下标值来得到相应的城市数组
     var city=[
     ["北京","天津","上海","重庆"],
     ["南京","苏州","南通","常州"],
    ["福州","福安","龙岩","南平"],
     ["广州","潮阳","潮州","澄海"],
     ["兰州","白银","定西","敦煌"]
     ];
 
     function getCity(){
         //获得省份下拉框的对象
         var sltProvince=document.form1.province;
         //获得城市下拉框的对象
         var sltCity=document.form1.city;
        
        //得到对应省份的城市数组
         var provinceCity=city[sltProvince.selectedIndex - 1];        //清空城市下拉框,仅留提示选项
         sltCity.length=1;
 
         //将城市数组中的值填充到城市下拉框中
         for(var i=0;i<provinceCity.length;i++){
             sltCity[i+1]=new Option(provinceCity[i],provinceCity[i]);
         }
     }
</script>
<meta name="keywords" content="text/aspxl; charset=gb2312" http-equiv="Content-Type">
<LINK rel="stylesheet" type="text/css" href="../../css/style.css">
  </HEAD>
<body>
html代码如下: <form id="form1" runat="server">
<asp:dropdownlist style="Z-INDEX: 0" id="dropCate" runat="server" ></asp:dropdownlist>
<asp:dropdownlist style="Z-INDEX: 0" id="dropCate1" runat="server"></asp:dropdownlist>
<SELECT NAME="province" onChange="getCity()" id="province" runat="server">
<OPTION VALUE="0" selected>请选择省份
</OPTION>
<OPTION VALUE="直辖市">直辖市
</OPTION>
<OPTION VALUE="江苏省">江苏省
</OPTION>
<OPTION VALUE="福建省">福建省
</OPTION>
<OPTION VALUE="广东省">广东省
</OPTION>
<OPTION VALUE="甘肃省">甘肃省
</OPTION>
</SELECT>
<SELECT NAME="city" id="city" runat="server" >
<OPTION VALUE="请选择城市" selected>请选择城市
</OPTION>
</SELECT>

解决方案 »

  1.   

    上面的代码还有一个问题需要解决,我从数据库读出的city值,怎样放到下拉单里?下面我的代码下拉单总是选在“请选择城市”上。但是数据库中已经是城市的名字了。this.city.Value = reader["job_area"].ToString();
      

  2.   

    autopostback=true
    点一下不就刷新了,刷新了可不就选在“请选择城市”上了。
      

  3.   

    updaterpanel实现dropdownlist 局部刷新
        <asp:ScriptManager ID="ScriptManager1" runat="server">
            </asp:ScriptManager>        <asp:UpdatePanel ID="UpdatePanel1" runat="server">
                <ContentTemplate>
                 
                     </ContentTemplate>
            </asp:UpdatePanel>
      

  4.   

    给你一个代码参考一下:看看对你有帮助吗?
    <html>
    <head>
    <style>
    #d1{
    position:absolute;
    width:450;
    height:350;
    background-Color:#cccccc;
    left:60;
    top:80;
    }
    #d2{
    height:30;
    background-Color:blue;
    color:white;
    font-size:20pt;
    }
    #d3{
    padding-left:50;
    padding-top:50;
    font-size:15pt;
    }
    </style>
    <script>
    var arr1 = new Array();
    arr1[0] = [new Option('--方向--','-1')];
    arr1[1] = [new Option('计算机方向1','jsj1'),new Option('计算机方向2','jsj2'),new Option('计算机方向3','jsj3')];
    arr1[2] = [new Option('英语方向1','eng1'),new Option('英语方向1','eng1')];
    function change(index){
    var s2Obj = document.getElementById('s2');
    s2Obj.length = arr1[index].length;
    for(i=0;i<arr1[index].length;i++){
    s2Obj.options[i] = arr1[index][i];
    }
    }
    </script>
    </head>
    <body>
    <div id="d1">
    <div id="d2">级联下拉列表</div>
    <div id="d3">
    <select id="s1" name="select1" style="width:150;" onchange="change(this.selectedIndex);">
    <option value="-1">--专业--</option>
    <option value="compute">计算机</option>
    <option value="english">英语</option>
    </select>
    <select id="s2" name="select2" style="width:150;">
    <option value="-1">--方向--</option>
    </select>
    </div>
    </div>
    </body>
    </html>
      

  5.   

    请问wuyq11是把dorpdownlist写在你写的这个代码中间吗?那么c#怎么写?
      

  6.   

    樓主,如果用js的話,用autopostback=true的話,就不行了,這樣就把你的js刷新了,用js的目的就是爲了不刷新頁面,如果要同時存在的話,就要用ajax中的控件updaterpanel這樣頁面不刷新了,就不會出現你所說的問題了!
      

  7.   

    我用了ajax中的控件updaterpanel,但是还是刷新,请各位帮帮忙。
    <asp:ScriptManager ID="ScriptManager1" runat="server"></asp:ScriptManager>
        <asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Conditional">
        <ContentTemplate>
                                                        <asp:DropDownList Style="z-index: 0" ID="dropCate" runat="server" OnSelectedIndexChanged="dropCate_SelectedIndexChanged" AutoPostBack="True">
                                                        </asp:DropDownList>
                                                        <asp:DropDownList Style="z-index: 0" ID="dropCate1" runat="server">
                                                        </asp:DropDownList>
                                                        </ContentTemplate>
                                                        <Triggers>
                                                            <asp:AsyncPostBackTrigger ControlID="dropCate" EventName="SelectedIndexChanged" />
                                                        </Triggers>
    </asp:UpdatePanel>