查找动态创建的控件
本文关键字:控件 创建 动态 查找 | 更新日期: 2023-09-27 17:54:27
我动态地创建了一个HTML表,其中填充了devex单选列表控件并将其添加到页面中。
//Create the radio list
ASPxRadioButtonList radButt = new ASPxRadioButtonList();
radButt.ID = "audit-" + audType;
tableCell2.Controls.Add(radButt);
tableRow.Cells.Add(tableCell2);
auditTable.Rows.Add(tableRow);
一切正常。
现在,在回调中,我想获取那个电台列表并获取它的设置。所以我尝试这个,但一直得到NULL。
ASPxRadioButtonList audRad = (ASPxRadioButtonList)Page.FindControl("audit-" + audType);
我在这里错过了什么?
问题是页面。FindControl方法不会搜索页面上的所有控件。它只搜索控件的顶层。您必须使用page搜索页面上的所有控件。FindControl和Control。FindControl,可能是递归的
另一个问题,您的意思是在回发中还是在同一个请求中找到单选按钮?如果您的意思是在回发中,那么您还必须在回发中重新生成控件,就像Aniket提到的那样。
根据Maarten的回答,这里是直接从我们大师的博客中挑选的递归FindControl解决方案:
private Control FindControlRecursive(Control root, string id)
{
if (root.ID == id)
{
return root;
}
foreach (Control c in root.Controls)
{
Control t = FindControlRecursive(c, id);
if (t != null)
{
return t;
}
}
return null;
}