首页 新闻 会员 周边 捐助

PlaceHolder 加载用户控件时,数据丢失问题。

0
悬赏园豆:20 [已解决问题] 解决于 2010-12-15 08:09

我用session记录的值, 当第一次加载的时候 我点击的是BUTTON1,加载了两个文本框 我输入内容,然后再点击BUTTON2 这是由于我用session记录了值 这个时候 两个文本框的值不变。  怪就怪在,当我在点击BUTTON1是 又重新加载了那两个文本控件 我再输入内容 然后再点击BUTTON1时 文本框的内容就没了 在写入再点击BUTTON1时又有了 这个问什么啊?  谁知道怎么解决 。
代码在下面 

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

public partial class _Default : System.Web.UI.Page
{
    protected override void OnInit(EventArgs e)
    {
        //在所有控件都已初始化且已应用所有外观设置后引发。使用该事件来读取或初始化控件属性。
        base.OnInit(e);
       
    }
    protected void Page_Load(object sender, EventArgs e)
    {
       
        if (!IsPostBack)
        {
            Session["AAA"] = null;
 
        }
        if (Session["AAA"] != null)
        {
            PlaceHolder1.Controls.Add((Control)Session["AAA"]);
        }

    }
    protected void Button1_Click(object sender, EventArgs e)
    {
        Control a = base.LoadControl("WebUserControl.ascx");
        Session["AAA"] = a;
        PlaceHolder1.Controls.Clear();
        PlaceHolder1.Controls.Add(a);
    }
  

    protected override void OnPreRender(EventArgs e)
    {
       
        base.OnPreRender(e);
    }

}

baihongri的主页 baihongri | 初学一级 | 园豆:4
提问于:2010-12-03 18:35
< >
分享
最佳答案
0

动态加载需要在OnInit的时候,重新创建这两个TextBox Instance,记得Id要对上。看看页面生命周期的文章。如果觉得较麻烦,我建议可以用GridView、ListView之类的会自动创建子项的Control来生成TextBox。这样就不用自己在OnInit的时候创建Textbox的instance了。

收获园豆:20
沉默的糕点 | 小虾三级 |园豆:1786 | 2010-12-03 22:49
其他回答(1)
0

好像动态加载的控件状态是不会被保存的.

I,Robot | 园豆:9783 (大侠五级) | 2010-12-03 22:18
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册