簡體   English   中英

如何遍歷頁面加載動態創建的控件

[英]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()是表和文字。

我換成tblDynamicRecPatrnpnlRecPatrn代碼和我得到了算作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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM