无法在动态添加的usercontrol中获取Textbox以维持状态

时间:2008-10-23 00:50:44

标签: c# asp.net

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

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

为什么我的控制不能维持它的状态? ie:文本框在回发时丢失了它们的值 - 控制树显示控件的名称,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指出的问题是,在点击事件的生命周期中,控件添加了一点 - 任何人都有任何想法?

2 个答案:

答案 0 :(得分:2)

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

最终编辑,我答应了 -

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

答案 1 :(得分:1)

我正在安装快递版。到那时,为什么要清除点击按钮的控件?你不能在点击链接时添加/加载uc一次控件吗?

通过执行此操作,您不会清除旧控件,并且它们将保留该值。