65.9K
CodeProject 正在变化。 阅读更多。
Home

根据用户操作动态生成控件

starIconstarIconemptyStarIconemptyStarIconemptyStarIcon

2.00/5 (1投票)

2007 年 9 月 19 日

viewsIcon

14390

downloadIcon

186

有时我们需要根据用户操作动态生成控件,例如在按钮点击事件中。但是,在回发后,动态生成的控件会消失。我使用ViewState来保存自动生成控件的信息,并在页面加载时生成它们。

Screenshot - demo.gif

引言

有时我们需要根据用户操作动态生成控件,例如在按钮点击事件中。但是,在回发后,动态生成的控件会消失。我使用ViewState来保存自动生成控件的信息,并在页面加载时生成它们。背景

使用代码

不幸的是,WebControl类是不可序列化的,所以我定义了一个可序列化的类来存储动态生成控件的信息。

 [Serializable]
    public class ContactControl
但是,生成的控件信息存储在ViewState中。
 private List<ContactControl> ContactControls
        {
            get
            {
                return ReadViewState<List<ContactControl>>("AddedControls", new List<ContactControl>());
            }
            set
            {
                ViewState["AddedControls"] = value;
            }
        }
在每次页面加载时,获取生成的控件信息并生成它们。
    protected override void OnLoad(EventArgs e)
        {
            List<ContactControl> contactControls = ContactControls;
            foreach (ContactControl contactControl in contactControls)
            {
                GenerateControl(contactControl);
            }
        }

关注点

虽然它可以工作,但我认为这不是最好的解决方案。如果有人有更好的解决方案,请发邮件给我。
© . All rights reserved.