我在asp面板内部动态创建了控件。
tblDynamicRecPatrn
是asp表,pnlRecPatrn
是面板。 asp表是内部面板,内部表是动态创建的控件。
我已经完成了以下代码来遍历控件,但它没有找到动态创建的控件。
for (int i = 0; i < tblDynamicRecPatrn.Controls.Count; i++)
{
if (tblDynamicRecPatrn.Controls[i].GetType() == typeof(RadioButton))
{
RadioButton rb = new RadioButton();
rb = (RadioButton)tblDynamicRecPatrn.Controls[i];
}
}
上面的代码将tblDynamicRecPatrn.Controls.Count
作为2返回,tblDynamicRecPatrn.Controls[i].GetType()
是表格和文字。
我在代码中将tblDynamicRecPatrn
替换为pnlRecPatrn
,并将计数设为3,其中2个为文字,1个为表格。
相反,如果我循环为foreach (Control control in Controls)
,我可以找到动态控件
任何人都可以帮我理清为什么我无法找到动态创建的控件。
答案 0 :(得分:0)
我认为你应该递归地遍历控件
Func<System.Web.UI.ControlCollection, IEnumerable<System.Web.UI.Control>> FlattenControls = null;
FlattenControls = coll => coll.Cast<System.Web.UI.Control>()
.Concat(coll.Cast<System.Web.UI.Control>()
.SelectMany(x => FlattenControls(x.Controls))
);
var radioButtons = FlattenControls(this.Controls).OfType<RadioButton>().ToList();