Metoda ta, w sposób iteracyjny sprawdza wszystkie "kontrolki w kontrolce", aż do momentu znalezienia szukanej przez nas kontrolki, po czym przeszukiwanie ustaje i dostajemy szukaną przez nas kontrolkę. W przypadku nie odnalezienia danej kontrolki, dostajemy "null". Najlepszym, znanym mi sposobem, na wykorzystanie tej metodzie, to uruchomienie jej na aktualnym "Master Page" (o ile strona na której operujemy posiada jakiś master page).public Control FindControlIterative(Control root, string id)
{
Control ctl = root;
LinkedList<Control> ctls = new LinkedList<Control>();
while (ctl != null)
{
if (ctl.ID == id)
return ctl;
foreach (Control child in ctl.Controls)
{
if (child.ID == id)
return child;
if (child.HasControls())
ctls.AddLast(child);
}
ctl = ctls.First.Value;
ctls.Remove(ctl);
}
return null;
}
Label lblFoo = FindControlIterative(this.
Page.Master, "lblFoo") as Label;
lblFoo.Text = "Bar";
Dzięki tej metodzie, mamy szybki i bezproblemowy dostęp do wszystkich kontrolek dostępnych na stronie, z poziomu "code behind" każdej kontrolki wykorzystanej na danej stronie (taki odpowiednik jQuery, tyle, że po stronie kodu C#).
Brak komentarzy:
Prześlij komentarz