繁体   English   中英

无法在动态添加的用户控件中获取文本框以维持状态

[英]Cannot get Textboxes in dynamically added usercontrol to maintain state

我尝试了所有看起来似乎都是的东西-之前我做过很多次类似的事情,但是显然我缺少一些东西。

我有一个UserControl(ucA)-在ucA上是一个LinkBut​​ton,可通过编程将不同的UserControl(ucB)加载到ucA面板上。 ucB具有TextBoxes等。

为什么我的控件不保持其状态? 即:文本框在回发时失去其值-控件树显示控件的名称,窗体值显示该值(在trace.axd中)

这是ucA的代码(基本上)

public int SlideCount
{
    get { return Convert.ToInt32(ViewState["SlideCount"]); }
    set { ViewState["SlideCount"] = value; }
}

protected void LinkButton1_Click(object sender, EventArgs e)
{
    SlideCount += 1;
    LoadSlideControls();
}

protected override void OnInit(EventArgs e)
{
    base.OnInit(e);
    LoadSlideControls();
}

private void LoadSlideControls()
{
    this.pnlAnnouncementHolder.Controls.Clear();
    for (int i = 0; i < SlideCount; i++)
    {
        this.pnlAnnouncementHolder.Controls.Add(
            LoadControl("AnnouncementSlide.ascx"));
    }
}

这是我要执行的操作的完整示例: http : //keithsblogs.com/ControlTest2.zip

Vyrotek指出的问题是,在click事件的生命周期中添加了控件的时间太晚了-有人有什么想法吗?

我只是尝试重新创建您已设置的内容,但似乎没有遇到相同的问题。 您希望我以某种方式向您发送我的解决方案吗?

我保证最后的编辑-

尝试以下解决方案: http : //www.vyrotek.com/code/ControlTest2.zip

我输入时正在安装Express Edition。 到那时,为什么还要单击按钮才能清除控件? 一旦点击链接,您能否添加/加载uc?

这样,您将不会清除旧的控件,它们将保留该值。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM