本人做了一个用户控件,里面使用了ListBox控件,在页面的Load事件里创建该用户控件,问题出在页面回传时,无法获取ListBox的当前选中项,SelectedIndex始终是-1,SelectedItem始终是空,我想应该是视图状态的问题,但不知道如何解决,请各位高手不吝赐教!非常感谢!

解决方案 »

  1.   

    动态加载控件的代码不要写在if(!Page.IsPostBack){}里
      

  2.   

    这些我都知道,我写在重载的OnLoad方法中,控件都给了唯一的ID!
      

  3.   

    每次回传的时候,动态创建控件时ListBox的项又重新绑定数据了,是否这样影响的视图状态的恢复啊!
      

  4.   

    绑定数据的代码写到if(!Page.IsPostBack)里
      

  5.   

    影响,刷新了页面绑定时还是初始化的值
    加上ispostback
      

  6.   

    我把数据绑定写在用户控件的if(!Page.IsPostBack)中,问题依旧!每次回传的时候在页面的Load节点重新动态创建的用户控件,会不会在用户控件内部不知道自己在回传啊!
      

  7.   

    这样吧,你把创建控件和数据绑定的代码都写到if(!Page.IsPostBack)外边,然后用ViewState存储你选择的信息
      

  8.   

    我刚测试了下,在页面的Init阶段动态创建控件可以解决,刚查了下书,恢复视图状态是在Init事件以后,看来在Load阶段动态创建控件不太合适,但现在还不清楚会不会出其他的问题,每次解决1个问题总会出些新问题,呵呵!