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





2.00/5 (1投票)
2007 年 9 月 19 日

14390

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

引言
有时我们需要根据用户操作动态生成控件,例如在按钮点击事件中。但是,在回发后,动态生成的控件会消失。我使用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);
}
}