相关疑难解决方法(0)

.NET中的动态控件问题

动态控制问题

大家好,

我想创建一些动态控件,并让它们在页面加载中保持其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)

c# asp.net viewstate controls dynamic

14
推荐指数
1
解决办法
1万
查看次数

标签 统计

asp.net ×1

c# ×1

controls ×1

dynamic ×1

viewstate ×1