当前位置:编程学习 > C#/ASP.NET >>

让人糊涂的TrackViewState()与视图状态保存,在下实在不解~

使用了TrackViewState()来保存视图状态
以下的代码一到三执行得到的结果都相同:
代码一:
protected void Page_Load(object sender, EventArgs e)
 {
        ListBox lb = new ListBox();
        (lb.Items as IStateManager).TrackViewState();
        if (!Page.IsPostBack)
        {
            lb.Items.Add("子项1");
            lb.Items.Add("子项2");
            lb.Items.Add("子项3");
            lb.Items.Add("子项4");
            lb.Items.Add("子项5");
        }
        this.form1.Controls.Add(lb);
 }

代码二:
protected void Page_Load(object sender, EventArgs e)
 {
        ListBox lb = new ListBox();
        (lb.Items as IStateManager).TrackViewState();
        lb.Items.Add("子项1");
        lb.Items.Add("子项2");
        lb.Items.Add("子项3");
        lb.Items.Add("子项4");
        lb.Items.Add("子项5");      
        this.form1.Controls.Add(lb);
 }

代码三:
protected void Page_Load(object sender, EventArgs e)
 {
        ListBox lb = new ListBox();
        (lb.Items as IStateManager).TrackViewState();
        if (!Page.IsPostBack)
        {
            lb.Items.Add("子项1");
            lb.Items.Add("子项2");
            lb.Items.Add("子项3");
            lb.Items.Add("子项4");
            lb.Items.Add("子项5");
        }
        else
        {
            lb.Items.Add("子项6");
        }
        this.form1.Controls.Add(lb);
 }
疑惑:当页面进行回发后
为什么代码二的结果ListBox 没有重复添加“子项1”“子项2”“子项3”“子项4”“子项5”?
为什么代码三得结果ListBox 没有“子项6”呢? --------------------编程问答-------------------- up --------------------编程问答-------------------- 自己顶 --------------------编程问答-------------------- 因为你每次都重新创建了一个实例 --------------------编程问答-------------------- 你说的问题和这个一样。

如何保存动态控件中的数据状态
补充:.NET技术 ,  ASP.NET
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,