问题就是点击按钮和刷新时,因为dropdownlist是javascript填充的,所以没有viewstate,所以刷新后就不能保值,怎么解决?

解决方案 »

  1.   

    用cookie记录后再读取cookie赋值
      

  2.   

    好的,谢谢各位,我呆会试试先,
    现在我把这段javascript写到一个js文件里,然后用<script language="javascript" src="ss.js"></script>
    引用,页面的两个下拉框就都是空的了?IE下面有!提示什么什么错误,我把这段代码放到本页的aspx里,就又没有问题了,这是怎么回事?
      

  3.   

    把这段javascript写到一个js文件里,然后用<script language="javascript" src="ss.js"></script>需要在ss.js中引用dropdownlist时 前面要写上document.all即document.all.dropdownlist才能引用到
      

  4.   

    用C#写联动多好!效果一点不比JAVASCRIPT的差
      

  5.   

    现在我把这段javascript写到一个js文件里,然后用<script language="javascript" src="ss.js"></script>
    路径没问题?那就是你 js 的问题,调试看看
      

  6.   

    路径错了吧?还有ss.js里就不用包含<script></script>了
      

  7.   

    用隐藏控件 必须是Runat=server的
      

  8.   

    路径没错,看看我的文件,HiddenValue和HiddenValueshi是两个隐藏控件,也runat=server了,现在是把这个写在aspx页面里没有问题,做成js文件就有问题了,不知道哪里还没有写好?
    var where = new Array(36); 
    function comefrom(loca,locacity) { this.loca = loca; this.locacity = locacity; } 
    where[0]= new comefrom("==请选择==","==请选择==");
    where[1] = new comefrom("北京","|东城|西城|崇文|宣武|朝阳|丰台|石景山|海淀|门头沟|房山|通州|顺义|昌平|大兴|平谷|怀柔|密云|延庆"); 
    where[2] = new comefrom("上海","|黄浦|卢湾|徐汇|长宁|静安|普陀|闸北|虹口|杨浦|闵行|宝山|嘉定|浦东|金山|松江|青浦|南汇|奉贤|崇明"); 
    where[3] = new comefrom("天津","|和平|东丽|河东|西青|河西|津南|南开|北辰|河北|武清|红挢|塘沽|汉沽|大港|宁河|静海|宝坻|蓟县"); 
    where[4] = new comefrom("重庆","|万州|涪陵|渝中|大渡口|江北|沙坪坝|九龙坡|南岸|北碚|万盛|双挢|渝北|巴南|黔江|长寿|綦江|潼南|铜梁|大足|荣昌|壁山|梁平|城口|丰都|垫江|武隆|忠县|开县|云阳|奉节|巫山|巫溪|石柱|秀山|酉阳|彭水|江津|合川|永川|南川"); 
    where[5] = new comefrom("河北","|石家庄|邯郸|邢台|保定|张家口|承德|廊坊|唐山|秦皇岛|沧州|衡水"); 
    where[6] = new comefrom("山西","|太原|大同|阳泉|长治|晋城|朔州|吕梁|忻州|晋中|临汾|运城"); 
    where[7] = new comefrom("内蒙古","|呼和浩特|包头|乌海|赤峰|呼伦贝尔盟|阿拉善盟|哲里木盟|兴安盟|乌兰察布盟|锡林郭勒盟|巴彦淖尔盟|伊克昭盟"); 
    where[8] = new comefrom("辽宁","|沈阳|大连|鞍山|抚顺|本溪|丹东|锦州|营口|阜新|辽阳|盘锦|铁岭|朝阳|葫芦岛"); 
    where[9] = new comefrom("吉林","|长春|吉林|四平|辽源|通化|白山|松原|白城|延边"); 
    where[10] = new comefrom("黑龙江","|哈尔滨|齐齐哈尔|牡丹江|佳木斯|大庆|绥化|鹤岗|鸡西|黑河|双鸭山|伊春|七台河|大兴安岭"); 
    where[11] = new comefrom("江苏","|南京|镇江|苏州|南通|扬州|盐城|徐州|连云港|常州|无锡|宿迁|泰州|淮安|丹徒|丹阳|张家港|太仓|昆山|吴江|海门|如皋|如东|扬中|东台|溧阳|武进|江阴|锡山|宜兴|金坛"); 
    where[12] = new comefrom("浙江","|杭州|宁波|温州|嘉兴|湖州|绍兴|金华|衢州|舟山|台州|丽水"); 
    where[13] = new comefrom("安徽","|合肥|芜湖|蚌埠|马鞍山|淮北|铜陵|安庆|黄山|滁州|宿州|池州|淮南|巢湖|阜阳|六安|宣城|亳州"); 
    where[14] = new comefrom("福建","|福州|厦门|莆田|三明|泉州|漳州|南平|龙岩|宁德"); 
    where[15] = new comefrom("江西","|南昌市|景德镇|九江|鹰潭|萍乡|新馀|赣州|吉安|宜春|抚州|上饶"); 
    where[16] = new comefrom("山东","|济南|青岛|淄博|枣庄|东营|烟台|潍坊|济宁|泰安|威海|日照|莱芜|临沂|德州|聊城|滨州|菏泽"); 
    where[17] = new comefrom("河南","|郑州|开封|洛阳|平顶山|安阳|鹤壁|新乡|焦作|濮阳|许昌|漯河|三门峡|南阳|商丘|信阳|周口|驻马店|济源"); 
    where[18] = new comefrom("湖北","|武汉|宜昌|荆州|襄樊|黄石|荆门|黄冈|十堰|恩施|潜江|天门|仙桃|随州|咸宁|孝感|鄂州");
    where[19] = new comefrom("湖南","|长沙|常德|株洲|湘潭|衡阳|岳阳|邵阳|益阳|娄底|怀化|郴州|永州|湘西|张家界"); 
    where[20] = new comefrom("广东","|广州|深圳|珠海|汕头|东莞|中山|佛山|韶关|江门|湛江|茂名|肇庆|惠州|梅州|汕尾|河源|阳江|清远|潮州|揭阳|云浮"); 
    where[21] = new comefrom("广西","|南宁|柳州|桂林|梧州|北海|防城港|钦州|贵港|玉林|南宁地区|柳州地区|贺州|百色|河池"); 
    where[22] = new comefrom("海南","|海口|三亚"); 
    where[23] = new comefrom("四川","|成都|绵阳|德阳|自贡|攀枝花|广元|内江|乐山|南充|宜宾|广安|达川|雅安|眉山|甘孜|凉山|泸州"); 
    where[24] = new comefrom("贵州","|贵阳|六盘水|遵义|安顺|铜仁|黔西南|毕节|黔东南|黔南"); 
    where[25] = new comefrom("云南","|昆明|大理|曲靖|玉溪|昭通|楚雄|红河|文山|思茅|西双版纳|保山|德宏|丽江|怒江|迪庆|临沧");
    where[26] = new comefrom("西藏","|拉萨|日喀则|山南|林芝|昌都|阿里|那曲"); 
    where[27] = new comefrom("陕西","|西安|宝鸡|咸阳|铜川|渭南|延安|榆林|汉中|安康|商洛"); 
    where[28] = new comefrom("甘肃","|兰州|嘉峪关|金昌|白银|天水|酒泉|张掖|武威|定西|陇南|平凉|庆阳|临夏|甘南"); 
    where[29] = new comefrom("宁夏","|银川|石嘴山|吴忠|固原"); 
    where[30] = new comefrom("青海","|西宁|海东|海南|海北|黄南|玉树|果洛|海西"); 
    where[31] = new comefrom("新疆","|乌鲁木齐|石河子|克拉玛依|伊犁|巴音郭勒|昌吉|克孜勒苏柯尔克孜|博尔塔拉|吐鲁番|哈密|喀什|和田|阿克苏"); 
    where[32] = new comefrom("香港",""); 
    where[33] = new comefrom("澳门",""); 
    where[34] = new comefrom("台湾","|台北|高雄|台中|台南|屏东|南投|云林|新竹|彰化|苗栗|嘉义|花莲|桃园|宜兰|基隆|台东|金门|马祖|澎湖"); 
    where[35] = new comefrom("国外","|北美洲|南美洲|亚洲|非洲|欧洲|大洋洲"); 
    function select() 
    {  
       // var obj=document.getElementById("Lable1");
       // obj.Text="dssd";
        //document.all.
       // obj.Text=province.options[province.selectedIndex].value;
    with(document.all.Form1.province) 

    var loca2 = options[selectedIndex].value; 
    document.all.HiddenValue.value = loca2;
    }
    for(i = 0;i < where.length;i ++) 
    {
    if (where[i].loca == loca2) 
    {
    loca3 = (where[i].locacity).split("|");
    for(j = 1;j < loca3.length;j++) 

    with(document.all.Form1.city) 

    length = loca3.length; 
    options[j].text = loca3[j]; 
    options[j].value = loca3[j];
    }
    }
    break;
    }
    }
    with(document.all.Form1.city) 

    options[0].selected = true;
    }
    //document.creator.address.value=loca2+loca4;
    }
    function init() {
    with(document.all.Form1.province) 
    {
    length = where.length;
    for(k=0;k<where.length;k++) 

    options[k].text = where[k].loca; 
    options[k].value = where[k].loca; 
    }
    options[selectedIndex].text = where[0].loca; options[selectedIndex].value = where[0].loca;
    }
    with(document.all.Form1.city) 
    {
    loca3 = (where[0].locacity).split("|");
    length = loca3.length;
    for(l=0;l<length;l++) 

    options[l].text = loca3[l]; options[l].value = loca3[l]; 
    }
    //options[selectedIndex].text = loca3[0]; options[selectedIndex].value = loca3[0];
    options[selectedIndex].text = where[0].loca; options[selectedIndex].value = where[0].loca;
    }
    }引用就是<script language="javascript" src="ss.js"></script>
    这样就出不出来,可能哪里少了document.all?
      

  9.   

    aspx页面对应的cs文件的page_load里,我这么写的
    if (! Page.IsStartupScriptRegistered("init"))
    {
    Page.RegisterStartupScript("init", "<script>init();</script>");
    }
    if(!IsPostBack)
    {

    province.Attributes.Add("onchange","select()");

    }
    现在取值也没有问题了,就是放到js文件里就显示不出来,IE状态栏提示的是
    错误:缺少对象
    估计哪里少写了什么东东,我看不出来了
      

  10.   

    c#写联动还是有刷新的,所以不想用c#的,xmlhttp的反应也有延迟,只有javascript的还算不错,现在也能取到值了,保存状态也没有问题了,现在就差最后一个问题了,把他放在一个js文件里,他就错了
      

  11.   

    本想帮你写一个,既然“现在也能取到值了,保存状态也没有问题了,现在就差最后一个问题了,把他放在一个js文件里,他就错了”,那就不用了就你现在的问题点一下你:如果放在js文件中,那就不能出现页面上的控件名之类的,你可以用参数传入控件对象
      

  12.   

    这样啊,我对javascript不熟悉,一碰上javascript的问题就发晕,数据岛听过也没有用过呢,welshem(天堂客) 真是好人啊,我这里谢谢先,给你鞠躬,花点你宝贵时间帮我写一个什么数据岛的把,保存状态要不要即可,我暂时还不需要,后台能取到值,能放到单独文件里就行了(因为不少页面都要调用),里面的省市内容我慢慢添好了,发送email到[email protected]或者msn:[email protected]给我联系,我另开帖200分相送,多谢
      

  13.   

    谢谢 goody9807() 大侠,我是初学asp.net,看了不少你发的帖子和写的文章,很是感激
      

  14.   

    <script language="javascript" src="ss.js"></script>
    引用时加
    <script src="ss.js" charset="gb2312"></script>
      

  15.   

    我把现在调试成功的文件给你,没有保留状态的,现在暂时也不解决这个问题
    <%@ Page language="c#" Codebehind="liandong.aspx.cs" AutoEventWireup="false" Inherits="oilnew.liandong" %>
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
    <HTML>
    <HEAD>
    <title>liandong</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">
    <!--
    var where = new Array(36); 
    function comefrom(loca,locacity) { this.loca = loca; this.locacity = locacity; } 
    where[0]= new comefrom("==请选择==","==请选择==");
    where[1] = new comefrom("北京","|东城|西城|崇文|宣武|朝阳|丰台|石景山|海淀|门头沟|房山|通州|顺义|昌平|大兴|平谷|怀柔|密云|延庆"); 
    where[2] = new comefrom("上海","|黄浦|卢湾|徐汇|长宁|静安|普陀|闸北|虹口|杨浦|闵行|宝山|嘉定|浦东|金山|松江|青浦|南汇|奉贤|崇明"); 
    where[3] = new comefrom("天津","|和平|东丽|河东|西青|河西|津南|南开|北辰|河北|武清|红挢|塘沽|汉沽|大港|宁河|静海|宝坻|蓟县"); 
    where[4] = new comefrom("重庆","|万州|涪陵|渝中|大渡口|江北|沙坪坝|九龙坡|南岸|北碚|万盛|双挢|渝北|巴南|黔江|长寿|綦江|潼南|铜梁|大足|荣昌|壁山|梁平|城口|丰都|垫江|武隆|忠县|开县|云阳|奉节|巫山|巫溪|石柱|秀山|酉阳|彭水|江津|合川|永川|南川"); 
    where[5] = new comefrom("河北","|石家庄|邯郸|邢台|保定|张家口|承德|廊坊|唐山|秦皇岛|沧州|衡水"); 
    where[6] = new comefrom("山西","|太原|大同|阳泉|长治|晋城|朔州|吕梁|忻州|晋中|临汾|运城"); 
    where[7] = new comefrom("内蒙古","|呼和浩特|包头|乌海|赤峰|呼伦贝尔盟|阿拉善盟|哲里木盟|兴安盟|乌兰察布盟|锡林郭勒盟|巴彦淖尔盟|伊克昭盟"); 
    where[8] = new comefrom("辽宁","|沈阳|大连|鞍山|抚顺|本溪|丹东|锦州|营口|阜新|辽阳|盘锦|铁岭|朝阳|葫芦岛"); 
    where[9] = new comefrom("吉林","|长春|吉林|四平|辽源|通化|白山|松原|白城|延边"); 
    where[10] = new comefrom("黑龙江","|哈尔滨|齐齐哈尔|牡丹江|佳木斯|大庆|绥化|鹤岗|鸡西|黑河|双鸭山|伊春|七台河|大兴安岭"); 
    where[11] = new comefrom("江苏","|南京|镇江|苏州|南通|扬州|盐城|徐州|连云港|常州|无锡|宿迁|泰州|淮安|丹徒|丹阳|张家港|太仓|昆山|吴江|海门|如皋|如东|扬中|东台|溧阳|武进|江阴|锡山|宜兴|金坛"); 
    where[12] = new comefrom("浙江","|杭州|宁波|温州|嘉兴|湖州|绍兴|金华|衢州|舟山|台州|丽水"); 
    where[13] = new comefrom("安徽","|合肥|芜湖|蚌埠|马鞍山|淮北|铜陵|安庆|黄山|滁州|宿州|池州|淮南|巢湖|阜阳|六安|宣城|亳州"); 
    where[14] = new comefrom("福建","|福州|厦门|莆田|三明|泉州|漳州|南平|龙岩|宁德"); 
    where[15] = new comefrom("江西","|南昌市|景德镇|九江|鹰潭|萍乡|新馀|赣州|吉安|宜春|抚州|上饶"); 
    where[16] = new comefrom("山东","|济南|青岛|淄博|枣庄|东营|烟台|潍坊|济宁|泰安|威海|日照|莱芜|临沂|德州|聊城|滨州|菏泽"); 
    where[17] = new comefrom("河南","|郑州|开封|洛阳|平顶山|安阳|鹤壁|新乡|焦作|濮阳|许昌|漯河|三门峡|南阳|商丘|信阳|周口|驻马店|济源"); 
    where[18] = new comefrom("湖北","|武汉|宜昌|荆州|襄樊|黄石|荆门|黄冈|十堰|恩施|潜江|天门|仙桃|随州|咸宁|孝感|鄂州");
    where[19] = new comefrom("湖南","|长沙|常德|株洲|湘潭|衡阳|岳阳|邵阳|益阳|娄底|怀化|郴州|永州|湘西|张家界"); 
    where[20] = new comefrom("广东","|广州|深圳|珠海|汕头|东莞|中山|佛山|韶关|江门|湛江|茂名|肇庆|惠州|梅州|汕尾|河源|阳江|清远|潮州|揭阳|云浮"); 
    where[21] = new comefrom("广西","|南宁|柳州|桂林|梧州|北海|防城港|钦州|贵港|玉林|南宁地区|柳州地区|贺州|百色|河池"); 
    where[22] = new comefrom("海南","|海口|三亚"); 
    where[23] = new comefrom("四川","|成都|绵阳|德阳|自贡|攀枝花|广元|内江|乐山|南充|宜宾|广安|达川|雅安|眉山|甘孜|凉山|泸州"); 
    where[24] = new comefrom("贵州","|贵阳|六盘水|遵义|安顺|铜仁|黔西南|毕节|黔东南|黔南"); 
    where[25] = new comefrom("云南","|昆明|大理|曲靖|玉溪|昭通|楚雄|红河|文山|思茅|西双版纳|保山|德宏|丽江|怒江|迪庆|临沧");
    where[26] = new comefrom("西藏","|拉萨|日喀则|山南|林芝|昌都|阿里|那曲"); 
    where[27] = new comefrom("陕西","|西安|宝鸡|咸阳|铜川|渭南|延安|榆林|汉中|安康|商洛"); 
    where[28] = new comefrom("甘肃","|兰州|嘉峪关|金昌|白银|天水|酒泉|张掖|武威|定西|陇南|平凉|庆阳|临夏|甘南"); 
    where[29] = new comefrom("宁夏","|银川|石嘴山|吴忠|固原"); 
    where[30] = new comefrom("青海","|西宁|海东|海南|海北|黄南|玉树|果洛|海西"); 
    where[31] = new comefrom("新疆","|乌鲁木齐|石河子|克拉玛依|伊犁|巴音郭勒|昌吉|克孜勒苏柯尔克孜|博尔塔拉|吐鲁番|哈密|喀什|和田|阿克苏"); 
    where[32] = new comefrom("香港",""); 
    where[33] = new comefrom("澳门",""); 
    where[34] = new comefrom("台湾","|台北|高雄|台中|台南|屏东|南投|云林|新竹|彰化|苗栗|嘉义|花莲|桃园|宜兰|基隆|台东|金门|马祖|澎湖"); 
    where[35] = new comefrom("国外","|北美洲|南美洲|亚洲|非洲|欧洲|大洋洲"); 
    function select() 
    {  
       // var obj=document.getElementById("Lable1");
       // obj.Text="dssd";
        //document.all.
       // obj.Text=province.options[province.selectedIndex].value;
    with(document.all.Form1.province) 

    var loca2 = options[selectedIndex].value; 
    document.all.HiddenValue.value = loca2;
    }
    for(i = 0;i < where.length;i ++) 
    {
    if (where[i].loca == loca2) 
    {
    loca3 = (where[i].locacity).split("|");
    for(j = 1;j < loca3.length;j++) 

    with(document.all.Form1.city) 

    length = loca3.length; 
    options[j].text = loca3[j]; 
    options[j].value = loca3[j];

    }
    }
    break;
    }
    }
    with(document.all.Form1.city) 

    options[0].selected = true;
    }
    //document.creator.address.value=loca2+loca4;
    }
    function select1() {
    with(document.all.Form1.city) 
    {
    var loca4=options[selectedIndex].value;
    document.all.HiddenValueshi.value = loca4;
    }
    }function init() {
    with(document.all.Form1.province) 
    {
    length = where.length;
    for(k=0;k<where.length;k++) 

    options[k].text = where[k].loca; 
    options[k].value = where[k].loca; 
    }
    options[selectedIndex].text = where[0].loca; options[selectedIndex].value = where[0].loca;
    }
    with(document.all.Form1.city) 
    {
    loca3 = (where[0].locacity).split("|");
    length = loca3.length;
    for(l=0;l<length;l++) 

    options[l].text = loca3[l]; options[l].value = loca3[l]; 
    }
    //options[selectedIndex].text = loca3[0]; options[selectedIndex].value = loca3[0];
    options[selectedIndex].text = where[0].loca; options[selectedIndex].value = where[0].loca;
    }
    }-->
    </script>
    </HEAD>
    <body MS_POSITIONING="GridLayout">
    <form id="Form1" method="post" runat="server">
    <asp:dropdownlist id="province" Runat="server"></asp:dropdownlist><asp:dropdownlist id="city" Runat="server"></asp:dropdownlist></SELECT><asp:button id="Button1" style="Z-INDEX: 101; LEFT: 240px; POSITION: absolute; TOP: 48px" runat="server"
    Text="Button"></asp:button><asp:label id="Label1" style="Z-INDEX: 102; LEFT: 280px; POSITION: absolute; TOP: 136px" runat="server">Label</asp:label><input id="HiddenValue" type="hidden" name="HiddenValue" runat="server">
    <input id="HiddenValueshi" type="hidden" name="HiddenValueshi" runat="server">
    </form>
    </body>
    </HTML>
      

  16.   

    using System;
    using System.Collections;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Web;
    using System.Web.SessionState;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Web.UI.HtmlControls;namespace oilnew
    {
    /// <summary>
    /// liandong 的摘要说明。
    /// </summary>
    public class liandong : System.Web.UI.Page
    {
    protected System.Web.UI.WebControls.DropDownList province;
    protected System.Web.UI.WebControls.DropDownList city;
    protected System.Web.UI.WebControls.Label Label1;
    protected System.Web.UI.HtmlControls.HtmlInputHidden HiddenValue;
    protected System.Web.UI.HtmlControls.HtmlInputHidden HiddenValueshi;

    protected System.Web.UI.WebControls.Button Button1;

    private void Page_Load(object sender, System.EventArgs e)
    {
    // 在此处放置用户代码以初始化页面

    if (! Page.IsStartupScriptRegistered("init"))
    {
    Page.RegisterStartupScript("init", "<script>init();</script>");
    }
    if(!IsPostBack)
    {

    province.Attributes.Add("onchange","select()");
    city.Attributes.Add("onchange","select1()");

    }

    } #region Web 窗体设计器生成的代码
    override protected void OnInit(EventArgs e)
    {
    //
    // CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
    //
    InitializeComponent();
    base.OnInit(e);
    }

    /// <summary>
    /// 设计器支持所需的方法 - 不要使用代码编辑器修改
    /// 此方法的内容。
    /// </summary>
    private void InitializeComponent()
    {    
    this.Button1.Click += new System.EventHandler(this.Button1_Click);
    this.Load += new System.EventHandler(this.Page_Load); }
    #endregion private void Button1_Click(object sender, System.EventArgs e)
    {
    Response.Write(HiddenValue.Value);
    Response.Write(HiddenValueshi.Value);

    }
    }
    }
      

  17.   

    别客气 你先试试  我怀疑是中文字符不支持的问题
    <script language="javascript" src="ss.js" charset="gb2312"></script>
      

  18.   

    别客气 你先试试  我怀疑是中文字符不支持的问题<script language=javascript src=ss.js charset=gb2312>
    </script>
      

  19.   

    既然是JS的,就不要用C#来写吧?
    用JS不是更好?两级的话个人认为直接用JS更好,更改时不用提交页面。
    当然,两级以上用JS的话数据量太大。就要考虑用C#了。
      

  20.   

    试过了,果然如此是中文字符的问题,goody9807() 大哥:高人
      

  21.   

    就差最后一点点的问题了,goody9807() 兄再指点一下:现在比如在js里这么写
    function select1(怎么写参数??) {
    with(document.all.Form1.city) 
    {
    var loca4=options[selectedIndex].value;
    document.all.HiddenValueshi.value = loca4;
    }
    }
    那么aspx页面的控件的两个dropdownlist和两个隐藏控件名字都是固定的了,这三个函数怎么加个参数,让我在后台这么city.Attributes.Add("onchange","select1(怎么写参数??)");就把要连动的两个dropdownlist和隐藏控件就传过去了?
    我javascript不会
      

  22.   

    function select1(arg1,arg2...) {
    with(document.all.Form1.city) 
    {
    var loca4=options[selectedIndex].value;
    document.all.HiddenValueshi.value = loca4;// document.all.HiddenValueshi.value=arg1;  //测试直接调用               
    }
    }
      

  23.   

    city.Attributes.Add("onchange","select1("+HiddenValueshi.value+","+HiddenValue.value+")");
      

  24.   


    初始化时要从隐藏控件load值
    function init() {}
      

  25.   

    function init() {
    with(document.all.Form1.province) 
    {
    length = where.length;
    for(k=0;k<where.length;k++) 

    options[k].text = where[k].loca; 
    options[k].value = where[k].loca; 
    }
    //options[selectedIndex].text = where[0].loca; options[selectedIndex].value = where[0].loca;
    options[selectedIndex].text=document.all.HiddenValue.value;
    options[selectedIndex].value=document.all.HiddenValue.value;
    }
    with(document.all.Form1.city) 
    {
    loca3 = (where[0].locacity).split("|");
    length = loca3.length;
    for(l=0;l<length;l++) 

    options[l].text = loca3[l]; options[l].value = loca3[l]; 
    }
    //options[selectedIndex].text = loca3[0]; options[selectedIndex].value = loca3[0];
    //options[selectedIndex].text = where[0].loca; options[selectedIndex].value = where[0].loca;
    options[selectedIndex].text=document.all.HiddenValueshi.value;
    options[selectedIndex].value=document.all.HiddenValueshi.value;
    }
    }
      

  26.   

    又改进了一下function init() {
         var cprin;
    with(document.all.Form1.province) 
    {
    length = where.length;
    for(k=0;k<where.length;k++) 
    {  
    options[k].text = where[k].loca; 
    options[k].value = where[k].loca; 
    if (where[k].loca==document.all.HiddenValue.value)
     cprin=where[k].locacity;
    }
    if (document.all.HiddenValue.value=="")
      {options[selectedIndex].text = where[0].loca; options[selectedIndex].value = where[0].loca;}
    else
    {
      options[selectedIndex].text=document.all.HiddenValue.value;
      options[selectedIndex].value=document.all.HiddenValue.value;
     } 
    }
    with(document.all.Form1.city) 
    {

    if (document.all.HiddenValueshi.value=="")
    {
    loca3 = (where[0].locacity).split("|");
    length = loca3.length;
    for(l=0;l<length;l++) 

    options[l].text = loca3[l]; options[l].value = loca3[l]; 
    }
      
       options[selectedIndex].text = where[0].loca; options[selectedIndex].value = where[0].loca;
     }
     else
     {
     
       loca3 = cprin.split("|");
    length = loca3.length;
    for(l=0;l<length;l++) 

    options[l].text = loca3[l]; options[l].value = loca3[l]; 
    }
       options[selectedIndex].text=document.all.HiddenValueshi.value;
       options[selectedIndex].value=document.all.HiddenValueshi.value;
     } 
       
    }
    }
      

  27.   

    上面的代码不再看了,只说说无viewstate控件的状态保持<head>
    function setValue(ctrlId,iValue)
    {
    var ctrl = document.getElementById(ctrlId); if(iValue == null || iValue == 0)
    ctrl.value = iValue;
    }
    </head>
    <body>
    <form ...><SELECT id="startYear" onchange="changeAll('startYear','startMonth','startXun','startWeek','startDate')" name="startYear">
    <SCRIPT language="javascript">
    for(var year=1980; year<=2050; year++)
    {
    var option="<option value="+year;
    option+=">"+year+"</option>";
    document.write(option);
    }
    </SCRIPT>
    </SELECT>
    </form>
    </body>cs:
    string startyears=Request.Form["startYear"];//保持回送前的控件值
    string script = "<script  language=\"javascript\">setValue(\"startYear\", " + startyears + ");\n";
    Page.RegisterStartScript("keep", script);
      

  28.   

    to:
    luckyprg(lucky) 有用C#的示例吗
      

  29.   

    goody9807() ,改进的不错啊。改进后还有一个问题就是状态虽然保留了,但是会这样,比如第一次选择了重庆,那么button提交后,菜单变成了
    重庆
    北京
    上海
    重庆
    这样的,就是多了一个重庆来这
      

  30.   

    options[selectedIndex].text=document.all.HiddenValueshi.value;
    options[selectedIndex].value=document.all.HiddenValueshi.value;
    这的原因 总是把选中项的text负值所以 会有你说的原因我再改改
      

  31.   

    这样的控件我自己写过的,可以保留状态
    示例可以看:job.nju.edu.cn  点击招聘信息,就可以看到效果
    我把我写的类贴出来,但愿能有点用,呵呵
    大体思路就是用一个类封装了两个dropdownlist,
    保留状态就用dropdownlist本身的功能
    但联动是用javascript实现的,而javascript代码都是在这个类中生成的代码太长,这里贴不下,可以看:
    http://www.x2design.net/ChinaCitySelector.txt
      

  32.   

    还没好,我把我做好的给你吧
    1、ss.js
    function SetDept(S,DSO,Elemnet,txt)
    {
        var doc,Provinces;
        doc=DSO.XMLDocument;
        Provinces=doc.selectNodes("//"+Elemnet);
        for(var i=0;i<Provinces.length;i++)
            S.options[i]=new Option(Provinces[i].childNodes[1].text,Provinces[i].childNodes[0].text);
        SetOpt(S,txt);
    }
    function SetOpt(S,txt)
    {
        if(document.getElementById(txt).value!="")
        {
            for(var i=0;i<S.length;i++)
                if(S.options[i].value==document.getElementById(txt).value)
                     S.options[i].selected=true;
        }
        else
        {
    document.getElementById(txt).value=S.options[0].value;
        }
    }
    function AddOption(S,DSO,Elemnet,AttrName,id,txt)
    {
        for(var i=S.length-1;i>=0;i--)
            S.options[i]=null;
        var doc,Citys;
        doc=DSO.XMLDocument;
        Citys=doc.selectNodes("//"+Elemnet+"[@"+AttrName+"='"+id+"']");
        for(var i=0;i<Citys.length;i++)
            S.options[i]=new Option(Citys[i].childNodes[1].text,Citys[i].childNodes[0].text);
        SetOpt(S,txt);
    }
    function SetValue(Pstr,p)
    {
        document.getElementById(Pstr).value=p;
    }
    2、CityData.xml不全你自己调整
    <?xml version="1.0" encoding="GBK"?>
    <Citys>
    <Province>
    <ProvinceID>01</ProvinceID>
    <ProvinceName>福建</ProvinceName>
    </Province>
    <Province>
    <ProvinceID>02</ProvinceID>
    <ProvinceName>海南</ProvinceName>
    </Province>
    <City ProvinceID="01">
    <CityID>0101</CityID>
    <CityName>福州</CityName>
    </City>
    <City ProvinceID="01">
    <CityID>0102</CityID>
    <CityName>厦门</CityName>
    </City>
    <City ProvinceID="01">
    <CityID>0103</CityID>
    <CityName>莆田</CityName>
    </City>
    <City ProvinceID="01">
    <CityID>0104</CityID>
    <CityName>三明</CityName>
    </City>
    <City ProvinceID="01">
    <CityID>0105</CityID>
    <CityName>泉州</CityName>
    </City>
    <City ProvinceID="01">
    <CityID>0106</CityID>
    <CityName>漳州</CityName>
    </City>
    <City ProvinceID="01">
    <CityID>0107</CityID>
    <CityName>南平</CityName>
    </City>
    <City ProvinceID="01">
    <CityID>0108</CityID>
    <CityName>龙岩</CityName>
    </City>
    <City ProvinceID="01">
    <CityID>0109</CityID>
    <CityName>宁德</CityName>
    </City>
    <City ProvinceID="02">
    <CityID>0201</CityID>
    <CityName>海口</CityName>
    </City>
    <City ProvinceID="02">
    <CityID>0202</CityID>
    <CityName>三亚</CityName>
    </City>
    </Citys>
      

  33.   

    3、aspx中
    1)、</HEAD>前加
    <script src="ss.js"></script>
    <xml id="CityDSO" src="CityData.xml"></xml>
    2)、<body>中加
    onload="SetDept(ProvinceList,CityDSO,'Province','txtP');AddOption(CityList,CityDSO,'City','ProvinceID',ProvinceList.value,'txtC');"
    3)、<Form>前加
    省会:<select name="ProvinceList" size="1" style="WIDTH:80px" onclick="AddOption(CityList,CityDSO,'City','ProvinceID',this.value,'txtC');SetValue('txtP',ProvinceList.value);SetValue('txtC',CityList.value);">
    </select>
    城市:<select name="CityList" size="1" style="WIDTH:80px" onclick="SetValue('txtC',this.value);">
    </select>
    4)、<form>后加
    <asp:TextBox id="txtP" style="DISPLAY:none" runat="server"></asp:TextBox>
    <asp:TextBox id="txtC" style="DISPLAY:none" runat="server"></asp:TextBox>
      

  34.   

    这样的调用不能放在<form></form>里,怎么做提交表单呀????