无法在动态添加的用户控件中获取文本框以保持状态
本文关键字:取文本 获取 状态 控件 动态 添加 用户 | 更新日期: 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控件吗?
这样做,就不会清除旧控件,它们将保留该值。