使用PlaceHolder动态加载用户控件,为何aspx页面再次提交后用户控件消失?

用户控件:uc.ascx(内含按钮AscxButton)  
  页面文件:a.aspx(内含按钮AspxButton)  
  流程是这样的:  
  在a.aspx中点击按钮AspxButton,用户控件能够出现在页面上(如果一直未点击过就不出现),其事件代码为:  
  AspxButton_Click()  
  {  
          UC   uc   =   LoadControl("uc.ascx");  
          PlaceHolder.Controls.Add(uc);  
  }  
   
  这时用户控件能够准确出现在页面上。当我再按uc.ascx里的AscxButton后,则控件在页面消失。  
  我在a.aspx的Page_Load()中没写任何代码。  
   
  请问如何避免这种情况?我最终是希望即使点击AscxButton后页面上依然能够看到用户控件。 问题点数:50、回复次数:1Top

1 楼saucer(思归)回复于 2005-02-24 01:53:13 得分 50

you   need   to   remember   to   re-load   the   control   upon   postback  
   
   
  public   bool   Loaded  
  {  
      get   {   object   o   =   ViewState["Loaded"];  
  if   (o   ==   null)   return   false;   else   return   (bool)o;   }  
      set   {     ViewState["Loaded"]   =   value;}  
  }  
   
   
  void   LoadYourControl()  
  {  
          UC   uc   =   LoadControl("uc.ascx");  
          PlaceHolder1.Controls.Add(uc);  
  }  
   
  AspxButton_Click()  
  {  
      LoadYourControl();  
      Loaded   =   true;  
  }  
   
  void   Page_Load(object   sender,   EventArgs   e)  
  {  
    if   (Loaded)  
        LoadYourControl();  
  }  
 
  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值