Я створив елементи управління динамічно всередині 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();