/ / Jak przechwytywać formanty utworzone dynamicznie w pageload - c #, asp.net, pętle, dynamiczne formanty

Jak przechwytywać formanty utworzone dynamicznie w pageload - c #, asp.net, pętle, dynamiczne formanty

Dynamicznie stworzyłem formanty wewnątrz tabeli asp, która jest wewnątrz panelu asp.

tblDynamicRecPatrn to tabela i pnlRecPatrn jest panel. Tablica asp to panel wewnętrzny, a tabela wewnętrzna to formanty tworzone dynamicznie.

Zrobiłem następujący kod, aby zapętlić kontrolki, ale nie znalazłem formantów utworzonych dynamicznie.

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];
}
}

Powyższy kod zwrócił mi tblDynamicRecPatrn.Controls.Count jako 2 i tblDynamicRecPatrn.Controls[i].GetType() był tabelą i literałem.

Wymieniłem tblDynamicRecPatrn z pnlRecPatrn w kodzie i ja dostałem liczbę jako 3, z 2 z nich jako literalną i jedną jako tabelę.

zamiast tego, jeśli pętlę jako foreach (Control control in Controls) niż mogę znaleźć dynamiczne sterowanie

Czy ktoś może mi pomóc wyjaśnić, dlaczego nie jestem w stanie znaleźć kontrolowanych dynaicznie formantów?

Odpowiedzi:

0 dla odpowiedzi № 1

Myślę, że powinieneś rekursywnie przeglądać kontrolki

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