Compartir a través de


Cómo: Agregar controles a una página Web ASP.NET mediante programación

Actualización: noviembre 2007

A veces es más práctico crear un control en tiempo de ejecución que en tiempo de diseño. Por ejemplo, imagine una página de resultados de la búsqueda en la que desea mostrar los resultados en una tabla. Ya que no sabe cuántos elementos se devolverán, desea generar de forma dinámica una fila de la tabla para cada elemento devuelto.

Nota:

Los controles existentes pueden proporcionar a menudo la funcionalidad que se obtiene al crear controles de forma dinámica. Por ejemplo, controles como Repeater, DataList y RadioButtonList pueden crear dinámicamente filas u otros elementos del control durante la ejecución de la página.

Para agregar un control mediante programación a una página, debe haber un contenedor para el nuevo control. Por ejemplo, si va a crear filas de tabla, el contenedor es la tabla. Si no existe un control obvio que actúe como contenedor, puede utilizar un control de servidor Web PlaceHolder o Panel.

En algunos casos, es posible que desee crear texto estático y controles. Para crear texto estático, puede utilizar un control de servidor Web Literal o Label. A continuación, puede agregar estos controles al contenedor como lo haría con cualquier otro control. Para obtener información de estado de vista en controles creados en tiempo de ejecución, vea Controles de servidor Web dinámicos y estado de vista.

Para agregar un control a una página Web ASP.NET mediante programación

  1. Cree una instancia del control y establezca sus propiedades, tal como se muestra en el ejemplo siguiente:

    Dim myLabel As New Label()
    myLabel.Text = "Sample Label"
    
    Label myLabel = new Label();
    myLabel.Text = "Sample Label";
    
    Nota:

    Los controles se agregan normalmente a la página durante la fase de inicialización de la página. Para obtener información detallada sobre fases de páginas, vea Información general sobre el ciclo de vida de una página ASP.NET.

  2. Agregue el nuevo control a la colección Controls de un contenedor que ya esté en la página, tal como se muestra en el ejemplo siguiente:

    Dim Panel1 As New Panel()
    Panel1.Controls.Add(myLabel)
    
    Panel Panel1= new Panel();
    Panel1.Controls.Add(myLabel);
    
    Nota:

    Como la propiedad es Controls es una colección, puede utilizar el método AddAt para colocar el nuevo control en una ubicación específica, por ejemplo, frente a otros controles. No obstante, esto puede causar errores en la página. Para obtener detalles, vea Controles de servidor Web dinámicos y estado de vista.

    En el ejemplo de código siguiente se muestra el controlador de eventos para el evento SelectedIndexChanged de un control denominado DropDownList1. El controlador crea el mismo número de controles de etiqueta que el usuario ha seleccionado en la lista desplegable. El contenedor para los controles es un control de servidor Web PlaceHolder denominado Placeholder1.

    Nota de seguridad:

    Los datos proporcionados por un usuario en una página Web pueden incluir secuencias de comandos de cliente malintencionadas. De forma predeterminada, las páginas Web ASP.NET validan los datos escritos por el usuario para comprobar que no incluyen secuencias de comandos ni elementos HTML. Para obtener más información, vea Información general sobre los ataques mediante secuencias de comandos.

    Private Sub DropDownList1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles DropDownList1.SelectedIndexChanged
        Dim DropDownList1 As New DropDownList()
        Dim PlaceHolder1 As New PlaceHolder()
        Dim i As Integer
        Dim numlabels As Integer
    
        ' Get the number of labels to create.
        numlabels = CInt(DropDownList1.SelectedItem.Text)
        For i = 1 To numlabels
            Dim myLabel As Label = New Label()
            ' Set the label's Text and ID properties.
            myLabel.Text = "Label " & i
            myLabel.ID = "Label" & i
            PlaceHolder1.Controls.Add(myLabel)
            ' Add a spacer in the form of an HTML <br /> element
            Dim spacer As LiteralControl = New LiteralControl("<br />")
            PlaceHolder1.Controls.Add(spacer)
        Next
    End Sub
    
    private void DropDownList1_SelectedIndexChanged(object sender, System.EventArgs e)
    {
        DropDownList DropDownList1 = new DropDownList();
        PlaceHolder PlaceHolder1 = new PlaceHolder();
    
      // Get the number of labels to create.
     int numlabels = System.Convert.ToInt32(DropDownList1.SelectedItem.Text);
     for (int i=1; i<=numlabels; i++)
     {
       Label myLabel = new Label();
    
       // Set the label's Text and ID properties.
       myLabel.Text = "Label" + i.ToString();
       myLabel.ID = "Label" + i.ToString();
       PlaceHolder1.Controls.Add(myLabel);
       // Add a spacer in the form of an HTML <br /> element.
       PlaceHolder1.Controls.Add(new LiteralControl("<br />"));
     } 
    }
    

Vea también

Tareas

Cómo: Establecer las propiedades de un control de servidor HTML mediante programación

Cómo: Establecer propiedades de estilo de un control de servidor ASP.NET mediante programación

Conceptos

Modelo de eventos de control de servidor Web ASP.NET

Otros recursos

Establecer las propiedades de un control de servidor ASP.NET mediante programación