我已经尝试了似乎所有的东西 - 我以前做了很多次类似的事情,但我显然错过了一些东西。
我有一个UserControl(ucA) - 在ucA上是一个LinkButton,它以编程方式将不同的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指出的问题是,在点击事件的生命周期中,控件添加了一点 - 任何人都有任何想法?
答案 0 :(得分:2)
我只是尝试重新创建你设置的内容,我似乎没有遇到同样的问题。您希望我以某种方式向您发送我的解决方案吗?
最终编辑,我答应了 -
答案 1 :(得分:1)
我正在安装快递版。到那时,为什么要清除点击按钮的控件?你不能在点击链接时添加/加载uc一次控件吗?
通过执行此操作,您不会清除旧控件,并且它们将保留该值。