Un metodo FindControl ricorsivo per pagine ASP.NET

di Daniele Bochicchio, in ASP.NET 2.0, Web Controls,

In alcuni casi è necessario recuperare un controllo annidato all'interno di una serie di altri, senza poter sapere a prori quale sia esattamente il suo controllo genitore. In casi come questo è necessario scrivere una funzione che faccia la scansione, in maniera ricorsiva, dell'intero albero dei controlli, così da poter essere utilizzato, ad esempio, sia all'interno di pagine che siano basate su Master Page, sia in altri contesti:

public Control FindControlRecursive(Control owner, string controlID)
{
  Control myControl = null;

  // faccio un ciclo su tutti i controlli
  if (owner.Controls.Count > 0)
  {
    foreach (Control c in owner.Controls)
    {
      myControl = FindControlRecursive(c, controlID);

      if (myControl != null)
        return myControl;
    }
  }

  // ho trovato il controllo, lo restituisco
  if (controlID.Equals(owner.ID))
    return owner;

  return null;
}

// recupero un controllo Label chiamato Title
Label footer = FindControlRecursive(this, "Title") as Label;

Commenti

Visualizza/aggiungi commenti

| Condividi su: Twitter, Facebook, LinkedIn

Per inserire un commento, devi avere un account.

Fai il login e torna a questa pagina, oppure registrati alla nostra community.

Approfondimenti

I più letti di oggi