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

本文关键字:取文本 获取 状态 控件 动态 添加 用户 | 更新日期: 2023-09-27 17:48:52

我尝试过似乎所有的东西——我以前做过很多次类似的事情,但我显然错过了一些东西。

我有一个UserControl(ucA)-在ucA上是一个LinkButton,它以编程方式将不同的UserControl(ucB)加载到ucA上的面板中。ucB有文本框等

为什么我的控制不保持它的状态?即:文本框在回发时丢失了其值-控件树显示控件的名称,Form值显示值(在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指出的问题是,控件在点击事件的生命周期中添加得有点晚——有人知道吗?

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

我只是试图重新创建您的设置,但似乎没有遇到同样的问题。你想让我以某种方式给你发送我的解决方案吗?

最终编辑,我承诺-

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

我在键入时安装express edition。到那时,你为什么要在点击按钮时清除控件?你不能在点击链接时添加/加载uconce控件吗?

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