/ / Як цикл через елементи управління створюється динамічно на pageload - c #, asp.net, цикли, динамічні елементи керування

Як цикл через елементи управління створюється динамічно на pageload - c #, asp.net, цикли, динамічні елементи керування

Я створив елементи управління динамічно всередині asp table, який знаходиться всередині asp панелі.

tblDynamicRecPatrn є столом і pnlRecPatrn це панель. asp table є внутрішньою панеллю, а всередині таблиці - елементи керування, створені динамічно.

Я зробив наступний код для циклу за допомогою елементів керування, але не знайшов елементи керування, створені динамічно.

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) ніж я можу знайти динамічний контроль

Чи може хто-небудь допомогти мені розібратися в тому, чому я не можу знайти елементи керування, створені динамічно.

Відповіді:

0 для відповіді № 1

Я думаю, що ви повинні цикл через управління рекурсивно

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();