我用javascript在客户端上改变了一个ListBox的属性disabled
然后我按下一个服务器的按钮进行了一些数据库操作.
这个ListBox的disabled属性又变成了原来初始化时候的样子,请问要怎么才可以保存到它的状态呢?

解决方案 »

  1.   

    viewState与session用法相同,它就是保持客户状态的工具
      

  2.   

    ViewState相当于页面全局变量
    ViewState[ListBoxID.disabled] = false;
    只要不退出本页面,包括刷新页面,它都不会丢失
      

  3.   

    你是不是在PageLoad里直接ListBox.Enable = false;
    如果是,加上
    if( !Page.IsPostBack )
    {
    ListBox.Enable = false;}
      

  4.   

    这个确实是个问题.
    客户端用脚本定义的控件的样式或其他属性,在服务端不予承认,而且页面刷新之后,这些属性或样式自动丢失,我们只能通过一些间接的手段来控制它.
    你可以在页面放一个文本框,在脚本改变下拉框属性时,把属性结果值放在输入框里面,在页面刷新的时候,重新在page_load里面对该控件做属性变化.脚本 
    document.all("DropDownList2").disabled = true;
    document.all("TextBox1").value = "true";page_load()
    this.DropDownList2.Attributes.Add("disabled",this.TextBox1.Text);
      

  5.   

    加一个隐藏控件 hidden 然后将他右键--〉runat=server 变为服务器端控件然后把ListBox的disabled状态存入隐藏控件用document.all("Hidden1").value=document.all("ListBox").disabled;在服务器端用 Hidden1.Value获得
      

  6.   

    各位,这个问题,我已经解决了.和大家的思路是差不多的,我用的是cookies的方法.
    1、在设置控件属性的同时,在后面同时加上一个cookie
      document.frm.lstbox_SelectStore.disabled=false;
      document.cookie = 'lstbox_SelectStore=' + escape('false')+';';
    2、同时增加两个取cookie值的函数。便于下次页面刷新后调用。这两个函数是
      //*********获取指定的Cookie的值***********
    function getCookie(cookieName) {
      var cookieString = document.cookie;
      var start = cookieString.indexOf(cookieName + '=');
      // 加上等号的原因是避免在某些 Cookie 的值里有
      // 与 cookieName 一样的字符串。
      if (start == -1) // 找不到
        return null;
      start += cookieName.length + 1;
      var end = cookieString.indexOf(';', start);
      if (end == -1) return unescape(cookieString.substring(start));
      return unescape(cookieString.substring(start, end));
    }
    //******************保持上一次的状态***********************************
    function SaveState(object,CookieName){    
       var s=object;
       if (getCookie(CookieName)=='false'){
            s.disabled=false;
       }  
       if (getCookie(CookieName)=='true'){
            s.disabled=true;
       }
    }
    3、在HTML页面的最下面添上调用的语句
       SaveState(document.frm.lstbox_SelectStore,'lstbox_SelectStore');完成