gpt4 book ai didi

c# - 如何将控件移动到动态添加的用户控件到页面中?

转载 作者:太空宇宙 更新时间:2023-11-03 14:37:01 26 4
gpt4 key购买 nike

我有一个用户控件,它在某些 Web 控件的 CreateChildControls 方法上动态移动。将此控件用于如下页面时:

<myControls:MyUserControl runat="server" ID="myUserControl" />

它完美地工作。

但是如果我想将该 userControl 动态添加到页面中,例如:

<asp:UpdatePanel runat="server">
<ContentTemplate>
<asp:PlaceHolder runat="server" ID="plhControls" />
</ContentTemplate>
</asp:UpdatePanel>
<asp:Button runat="server" ID="btnAdd" OnClick="btnAdd_Click" />

.cs

protected void btnAdd_Click(object sender, EventArgs e)
{
MyUserControl myUserControl =(MyUserControl)LoadControl("~/Controls/MyUserControl.ascx");
myUserControl.ID = "test";
plhControls.Controls.Add(myUserControl );
}

它在我的 CreateChildControls 中崩溃并出现错误:在 DataBind、Init、Load、PreRender 或 Unload 阶段无法修改控件集合。

确切的行是当我将 webControls 添加到我的 UserControl 中的占位符时:

plhContent.Controls.Add(myWebControl);

所以我不明白为什么在这种情况下,当我动态添加我的 UserControl 时,我无法在 CreateChildControls 事件中移动 Web 控件。

最佳答案

由于 LoadControl 将加载控件的每个事件都 catch 当前事件,因此不可能与父级同时运行 CreateChildControls,因为事件已经在此时发生。

在我的例子中,我无法动态添加我的 UserControl,所以我做了相反的事情来重现我想要的相同行为。我初始化我所有的控件,并删除那些我不想要的 OnClick。这增加了不必要的加载时间,但在我使用它的场景中是可以接受的。

关于c# - 如何将控件移动到动态添加的用户控件到页面中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/620684/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com