动态控制问题
大家好,
我想创建一些动态控件,并让它们在页面加载中保持其viewstate.够容易吧?我所要做的就是在每次加载页面时使用相同的ID重新创建控件.但是,这是捕获 - 在我的PreRender事件中,我想要清除控件集合,然后使用新值重新创建动态控件.造成这种情况的原因很复杂,我可能需要大约一页来解释我为什么要这样做.所以,为了简洁起见,让我们假设我绝对必须这样做,而且别无他法.
在我的PreRender事件中重新创建控件后,问题出现了.重新创建的控件永远不会绑定到视图状态,并且它们的值不会跨页面加载持续存在.我不明白为什么会这样.我已经在我的OnLoad事件中重新创建了控件.当我这样做时,新创建的控件绑定到ViewState就好了,前提是我每次都使用相同的ID.但是,当我尝试在PreRender事件中执行相同的操作时,它会失败.
无论如何,这是我的示例代码:
namespace TestFramework.WebControls {
public class ValueLinkButton : LinkButton
{
public string Value
{
get
{
return (string)ViewState[ID + "vlbValue"];
}
set
{
ViewState[ID + "vlbValue"] = value;
}
}
}
public class TestControl : WebControl
{
protected override void OnLoad(EventArgs e)
{
base.OnLoad(e);
Controls.Clear();
ValueLinkButton tempLink = null;
tempLink = new ValueLinkButton();
tempLink.ID = "valueLinkButton";
tempLink.Click += new EventHandler(Value_Click);
if (!Page.IsPostBack)
{
tempLink.Value = "old value";
}
Controls.Add(tempLink);
}
protected override void OnPreRender(EventArgs …Run Code Online (Sandbox Code Playgroud)