Como: Adicionar controles a uma página da Web do ASP.NET por programação

Às vezes é mais prático criar um controle em tempo de execução do que em tempo de design.Por exemplo, imagine um página de resultados de pesquisa na qual você deseja exibir resultados em uma tabela.Como você não sabe quantos itens serão retornados, você deseja gerar dinamicamente uma linha de tabela para cada item retornado.

Observação:

Controles existentes frequentemente podem fornecer a funcionalidade que você obtém ao criar controles dinamicamente.Por exemplo, controles como Repeater, DataList, e RadioButtonList podem criar linhas ou outros elementos de controle dinamicamente quando a página é executada.

Para adicionar um controle a uma página programaticamente, deve haver um contêiner para o novo controle.Por exemplo, se você estiver criando linhas de tabela, o contêiner é a tabela.Se não houver nenhum controle óbvio para atuar como recipiente, você pode usar um controle de servidor Web PlaceHolder ou Panel.

Em algumas instâncias, convém criar texto e controles estáticos.Para criar texto estático, você pode usar um Literal ou um controle de servidor Web Label.Em seguida, você pode adicionar esses controles para o recipiente, como faria qualquer outro controle.Para obter informações sobre estado de exibição em controles criados no tempo de execução, consulte Controles Dinâmicos de Servidor Web e Estado de Exibição.

Observação importante:

Para adicionar um controle a um página da Web do ASP.NET programaticamente

  1. Crie uma instância do controle e defina suas propriedades, conforme mostrado no exemplo a seguir:

    Dim myLabel As New Label()
    myLabel.Text = "Sample Label"
    
    Label myLabel = new Label();
    myLabel.Text = "Sample Label";
    
    Observação:

    Normalmente os controles são adicionados à página durante o estágio de inicialização da página.Para obter detalhes sobre páginas estágios, consulte Visão Geral do Ciclo de Vida da Página ASP.NET.

  2. Adicione o novo controle à coleção Controls de um contêiner pertencente à página, conforme mostrado no exemplo a seguir:

    Dim Panel1 As New Panel()
    Panel1.Controls.Add(myLabel)
    
    Panel Panel1= new Panel();
    Panel1.Controls.Add(myLabel);
    
    Observação:

    Como a propriedade Controls é uma coleção, você pode usar o método AddAt para colocar o novo controle em um local específico — por exemplo, na frente de outros controles.Entretanto, isso pode gerar erros na página.Para obter detalhes, consulte Controles do Servidor Web Dinâmicos e Estado da Exibição (View State).

    O exemplo de código a seguir mostra o manipulador de eventos para o evento SelectedIndexChanged de um controle denominado DropDownList1:O manipulador cria tantos controles de rótulo quanto o usuário tiver selecionado na lista suspensa.O recipiente para os controles é um controle de servidor Web PlaceHolder chamado Placeholder1.

    Observação de segurança:

    A entrada do usuário em uma página da Web pode incluir script de cliente possivelmente mal-intencionado.Por padrão, páginas Web ASP.NET validam se as entradas de usuário não incluem scripts ou elementos HTML.Para obter mais informações, Visão Geral de Scripts Maliciosos.

    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 />"));
     } 
    }
    

Consulte também

Tarefas

Como: conjunto propriedades de controle de servidor HTML programaticamente

Como: conjunto propriedades de estilo de controle de servidor ASP.NET por programação

Conceitos

Modelo de Eventos de Controle do Servidor Web ASP.NET

Outros recursos

Definindo Propriedades do Controle do Servidor ASP.NET por Programação