欢迎来到.net学习网

欢迎联系站长一起更新本网站!QQ:879621940

您当前所在位置:首页 » ASP.Net » 正文

热门阅读

如何保存动态控件中的数据状态

创建时间:2011年08月11日 11:08  阅读次数:(5448)
分享到:
先看一个有趣的例子,我在Page_Load中动态添加了一个DropDownList控件,并为DropDownList控件动态添加一些下拉项,如下:
 protected void Page_Load(object sender, EventArgs e)
        {
            DropDownList li = new DropDownList();
            if (!IsPostBack)
            {
                li.Items.Add("abc");
                li.Items.Add("abcd");
                li.Items.Add("abcde");
            }
    this.form1.Controls.Add(li);


这时候,只要页面任何回发操作,li中的下拉项就会全部消失,原因是因为未为DropDownList控件启用视图跟踪监控。

要如何解决该问题呢?
1,直接开启DropDownList的视图跟踪临控,代码修改如下:
protected void Page_Load(object sender, EventArgs e)
        {
            DropDownList li = new DropDownList();
            ((IStateManager)li.Items).TrackViewState();
            if (!IsPostBack)
            {
                li.Items.Add("abc");
                li.Items.Add("abcd");
                li.Items.Add("abcde");
            }
            this.form1.Controls.Add(li);
        }


2,新添加控件,后为控件添加下拉项,代码修改如下:
protected void Page_Load(object sender, EventArgs e)
        {
            DropDownList li = new DropDownList();
            this.form1.Controls.Add(li);
            if (!IsPostBack)
            {
                li.Items.Add("abc");
                li.Items.Add("abcd");
                li.Items.Add("abcde");
            }
        }


有朋友要问了,为什么仅仅是换了代码的位置,就能保存控件的下拉项了呢?其实还是因为Controls.Add方法中开启了视图跟踪临控!a
来源:
说明:所有来源为 .net学习网的文章均为原创,如有转载,请在转载处标注本页地址,谢谢!
【编辑:Wyf

打赏

取消

感谢您的支持,我会做的更好!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

最新评论

共有评论0条
  • 暂无任何评论,请留下您对本文章的看法,共同参入讨论!
发表评论:
留言人:
内  容:
请输入问题 4+43=? 的结果(结果是:47)
结  果: