1

我在 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()是表和文字。

我在代码中替换为 3,其中 2 个作为文字,1 个作为表格tblDynamicRecPatrnpnlRecPatrn

相反,如果我循环foreach (Control control in Controls)比我能找到动态控件

谁能帮我弄清楚为什么我无法找到动态创建的控件。

4

1 回答 1

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();
于 2012-08-30T12:08:05.997 回答