![](/img/trans.png)
[英]ASP.net event handlers are not attached when controls are created dynamically after pageload event
[英]How to loop through the controls created dynamically on pageload
我已經在ASP面板中的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作為文字和作為一個表。
相反,如果我像foreach (Control control in Controls)
那樣循環,則我可以找到動態控件
誰能幫我弄清為什么我找不到動態創建的控件。
我認為您應該遞歸地遍歷控件
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();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.