在我的代码后面(c#)中,我动态创建了一些RadioButtonList,每个RadioButton中有更多RadioButton。我将所有控件放在一个特定的面板中。
我需要知道的是稍后如何访问这些控件,因为它们不是在 .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 对象内创建控件的数据。在页面加载方法中,我传递了相同的数据来创建动态控件。
我的建议是:
编写一个方法来创建动态控件。
在页面加载方法中检查它是否是回发...
if(Page.IsPostBack)
{
// Recreate your controls here.
}
一件非常重要的事情:为动态创建的控件分配唯一的 ID,以便 ASP.NET 可以重新创建绑定其现有事件处理程序的控件、恢复其 ViewState 等。
myControl.ID = "myId";
我很难了解这东西是如何工作的。一旦你知道你手中就有权力。动态创建的控件开辟了一个充满可能性的新世界。
正如 Frank 提到的:您可以通过这种方式使用“is”关键字来方便您的生活......
if(child is RadioButtonList)
Note:值得一提的是ASP.NET 页面生命周期概述 http://msdn.microsoft.com/en-us/library/ms178472.aspxMSDN 页面以供进一步参考。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)