gpt4 book ai didi

c# - 访问动态创建的控件 (c#)

转载 作者:行者123 更新时间:2023-11-30 12:17:53 26 4
gpt4 key购买 nike

在我的隐藏代码 (c#) 中,我动态创建了一些 RadioButtonLists,每个 RadioButtons 都有更多的 RadioButtons。我将所有控件都放在特定的面板上。我需要知道的是以后如何访问这些控件,因为它们不是在 .aspx 文件中创建的(通过从工具箱拖放)?

我试过这个:

    foreach (Control child in panel.Controls)
{
Response.Write("test1");
if (child.GetType().ToString().Equals("System.Web.UI.WebControls.RadioButtonList"))
{
RadioButtonList r = (RadioButtonList)child;
Response.Write("test2");
}
}

“test1”和“test2”没有出现在我的页面中。这意味着这个逻辑有问题。有什么建议吗?

最佳答案

您必须在每次回发后重新创建控件。

ASP.NET 是无状态的,也就是说,当您将页面回发到服务器时,您动态创建的控件将不再是该页面的一部分。

上周我不得不再次克服这种情况。

我做了什么?我保存了用于在 Session 对象中创建控件的数据。在 PageLoad 方法上,我传递了相同的数据以重新创建动态控件。

我的建议是:编写一个方法来创建动态控件。

在 PageLoad 方法上检查它是否是回传...

if(Page.IsPostBack)
{
// Recreate your controls here.
}

一件非常重要的事情:为您动态创建的控件分配唯一 ID,以便 ASP.NET 可以重新创建绑定(bind)其现有事件处理程序、恢复其 ViewState 等的控件。

myControl.ID = "myId";

我费了好大劲才知道这东西是怎么工作的。一旦你学会了,你就掌握了力量。动态创建的控件打开了一个充满可能性的新世界。

正如 Frank 提到的:您可以通过这种方式使用“is”关键字来方便您的生活...

if(child is RadioButtonList)


注意:值得一提的是 ASP.NET Page Life Cycle Overview MSDN 上的页面以供进一步引用。

关于c# - 访问动态创建的控件 (c#),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2982198/

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