【发布时间】:2011-10-12 22:39:13
【问题描述】:
我知道“为什么”控件在回发时消失了,到目前为止,我已经取得了巨大的成功,只是在页面初始化中动态创建了我需要做的事情。然而,当我不得不根据现有下拉列表的值向 asp.net 页面添加一些控件时,这对我来说就崩溃了。
所以我的问题很简单,我似乎无法找到一个好的工作代码示例。我需要根据下拉列表的值向页面添加一些控件。然后在其他回发中保留这些添加的控件(会话很好)。
这是一个可以使用的sn-p:
protected void Page_Init(System.Object sender, System.EventArgs e)
{
RebuildPlaceholder();
}
protected void ddlGroup_Change(System.Object sender, System.EventArgs e)
{
ExampleDataContext ctxExample = new ExampleDataContext();
var aryExample = (from rslt in ctxExample.mvExample
where rslt.label.ToLower() == ddlGroup.SelectedValue
select rslt);
foreach (var objExample in aryExample)
{
TextBox txtCreated = new TextBox();
txtCreated.ID = "ddl" + objExample.ID;
plcExample.Controls.Add(txtCreated);
}
StorePlaceholder();
}
private void StorePlaceholder()
{
//Need code to store all controls in a placeholder.
}
private void RebuildPlaceholder()
{
//Need code to rebuild all of the controls from Session.
}
我找到了这篇相关文章:Dynamically Adding Controls,但我正在为序列化所有控件等的语法而苦苦挣扎。
这可以限制为页面上已经存在的单个占位符的子控件,只是存储/恢复该占位符的控件是我所追求的。
任何版本的 ASP.NET 都可以,如果在 4.0 中有什么可以让这变得简单的话。
【问题讨论】:
标签: c# asp.net dynamic user-controls postback