Criando controles dinamicamente em Asp.Net
Este é meu primeiro artigo nesse Portal. Resolvi escrevê-lo devido a dificuldade que tive em encontrar material sobre esse assunto quando precisei criar formulários diferentes dentro de um cenário.
Este pequeno artigo apresenta uma solução para criar controles e tags html dentro de um outro controle.
Criando a página a ser usada
O código abaixo é referente a página Default.aspx, foi criado apenas um Panel identificado como Panel1.
<%@ Page Language="VB" AutoEventWireup="false" CodeFile="Default.aspx.vb" Inherits="_Default" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>Criando Controles Dinamicamente</title>
</head>
<body>
<form id="form1" runat="server">
<asp:Panel ID="Panel1" runat="server">
</asp:Panel>
</form>
</body>
</html>
Criando o Code-Behind a ser usado
O código abaixo é referente ao arquivo Default.aspx.vb. Foi criado uma função chamada de GetLiteral, essa função transforma o texto no tipo Literal, que é responsável por renderizar textos estáticos. Aproveitamos o evento Page_Load como um exemplo para criar o controle DropDownList dentro do controle Panel1. Veja como ficou o código.
Partial Class _Default
Inherits System.Web.UI.Page
Function GetLiteral(ByVal text As String)
Dim rv As New Literal
rv.Text = text
GetLiteral = rv
End Function
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
Dim ddl As New DropDownList 'cria um novo controle dropdownlist
ddl.ID = "ddl" 'identifico o dropdownlist
ddl.Items.Add(New ListItem("Goiaba")) 'adicionar alguns itens ao dropdownlist
ddl.Items.Add(New ListItem("Banana"))
ddl.Items.Add(New ListItem("Laranja"))
Panel1.Controls.Add(ddl) 'adicionar controle ao panel
Panel1.Controls.Add(GetLiteral("<br>DropDownList criado dinamicamente!!<br>")) 'usamos a função GetLiteral para adicionar tags/textos em html ao panel
End Sub
End Class
Partial Class _Default
Inherits System.Web.UI.Page
Function GetLiteral(ByVal text As String)
Dim rv As New Literal
rv.Text = text
GetLiteral = rv
End Function
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
Dim ddl As New DropDownList 'cria um novo controle dropdownlist
ddl.ID = "ddl" 'identifico o dropdownlist
ddl.Items.Add(New ListItem("Goiaba")) 'adicionar alguns itens ao dropdownlist
ddl.Items.Add(New ListItem("Banana"))
ddl.Items.Add(New ListItem("Laranja"))
Panel1.Controls.Add(ddl) 'adicionar controle ao panel
Panel1.Controls.Add(GetLiteral("<br>DropDownList criado dinamicamente!!<br>")) 'uso a função GetLiteral para adicionar tags/textos em html ao panel
End Sub
End Class
A Figura 01 é referente ao resultado da aplicação em execução.
Figura 01
Espero ter ajudado com a publicação desse artigo, até a próxima!
[]’s
Paulo Holanda