[英]Cannot get Textboxes in dynamically added usercontrol to maintain state
我尝试了所有看起来似乎都是的东西-之前我做过很多次类似的事情,但是显然我缺少一些东西。
我有一个UserControl(ucA)-在ucA上是一个LinkButton,可通过编程将不同的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.