Aquí podría ser tu PUBLICIDAD


Contando controles en la página

votos
1

Mi problema es que, quiero contar los controles en una página y luego obtener sus tipos, si hay cuadros de texto, casillas de verificación o cuadros combinados, entonces ¿los habilitan o deshabilitan? ¿Hay algún ejemplo en la red?

Gracias

Publicado el 12/03/2009 a las 16:15
fuente por usuario mehmetserif
En otros idiomas...        العربية       

3 respuestas

votos
4

Esta sería una operación costosa, ya que tendrías que recorrer de forma recursiva la colección de control de la página comprobando cada control. Tal vez no sepa que ASP.NET conecta en cascada la Disabledpropiedad de padres a hijos. En otras palabras, si configura un control principal como deshabilitado, también se deshabilitarán todos los controles de entrada infantil.

Editar: si realmente quieres hacerlo de esta manera, esta es la mejor manera de hacerlo:

protected override void OnPreRender(EventArgs e)
{
    base.OnPreRender(e);

    int count = 0;

    this.disableControls(this, ref count);
}

void disableControls(Control control, ref int count)
{
    foreach (Control c in control.Controls)
    {
        WebControl wc = c as WebControl;

        if (wc != null)
        {
            count++;
            wc.Enabled = false;             
        }

        this.disableControls(c, ref count);
    }
}
Respondida el 12/03/2009 a las 04:18
fuente por usuario Andrew Hare


Aquí podría ser tu PUBLICIDAD


votos
0
private void ChangeControlStatus(ControlCollection col, bool status)
 {
    foreach (Control ctrl in col)
        ChangeControlStatus(ctrl.Controls, status)

          if (ctrl is TextBox)

            ((TextBox)ctrl).Enabled = status;

          else if (ctrl is Button)

            ((Button)ctrl).Enabled = status;

          else if (ctrl is RadioButton)

            ((RadioButton)ctrl).Enabled = status;

          else if (ctrl is ImageButton)

            ((ImageButton)ctrl).Enabled = status;

          else if (ctrl is CheckBox)

            ((CheckBox)ctrl).Enabled = status;

          else if (ctrl is DropDownList)

            ((DropDownList)ctrl).Enabled = status; 

       else if (ctrl is HyperLink)

        ((HyperLink)ctrl).Enabled = status; 

 }
Respondida el 12/03/2009 a las 04:22
fuente por usuario Glennular

votos
0

Puedes usar un método como:

public int CountControls(Control top)
{
    int cnt = 1;
    foreach (Control c in top.Controls)
        cnt += CountControls(c);
    return cnt;
}

Pero como dijo Andrew, sería caro.

Respondida el 12/03/2009 a las 04:20
fuente por usuario Joel