sobota, 14 lipca 2012

Find Control Iteractive

Skoro pierwszy wpis powitalny mam już za sobą, najwyższa pora, opublikować jakiś wpis merytoryczny. Pierwszy wpis merytoryczny, jest poświęcony metodzie roboczo nazwanej FindControlIterative, która wykorzystana na stronach ASP.NET służy do znalezienia konkretnej kontrolki na stronie za pomocą kodu języka C# (tzw. "code behind").
        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;
        }
 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).

                    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