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 № 1Myś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();