<< Click to Display Table of Contents >> Criando controles dinamicamente |
![]() ![]() ![]() |
Definição
Uma página tem um TextBox. Coloque um número, exemplo: 8.
Ao pressionar o botão Enviar será aberta uma segunda página criando dinamicamente 8 TextBox dentro de uma Table.
Ali nesta segunda página tem outro botão Ordenar. Clique para acessar e ordernar o conteúdo das TextBox dinâmicas usando array.
Default.aspx
<asp:Label ID="Label1" runat="server" Text="Informa quantos campos"></asp:Label>
<br />
<asp:TextBox ID="txtCampos" runat="server"></asp:TextBox>
<asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server" ControlToValidate="txtCampos"
ErrorMessage="Obrigatório">Obrigatório</asp:RequiredFieldValidator>
<br />
<asp:Button ID="btnEnviar" runat="server" Text="Enviar" />
Default.aspx.cs
using System;
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
protected void btnEnviar_Click(object sender, EventArgs e)
{
Response.Redirect("Exibir.aspx?num=" + txtCampos.Text);
}
}
Exibir.aspx
<asp:Table ID="Table1" runat="server" CellPadding="2" CellSpacing="2" Font-Names="Arial" GridLines="Vertical"></asp:Table>
<br />
<asp:Button ID="btnOrdenar" runat="server" OnClick="btnOrdenar_Click" Text="Ordenar" ToolTip="Exibir os numeros em ordem crescente" />
<br />
<asp:Button ID="btnVoltar" runat="server" OnClick="btnVoltar_Click" Text="Voltar" />
Exibir.aspx.cs
using System;
using System.Web.UI.WebControls;
public partial class Exibir : System.Web.UI.Page
{
private string PREFIXO = "meuCampo_";
protected void Page_Load(object sender, EventArgs e)
{
// não tem query string, cai fora
if (Request.QueryString["num"] == null)
return;
// componentes usados para adicionar o componente na tela (table)
TableRow linha;
TableCell celula;
TextBox campo;
Random random = new Random();
int contCampos = int.Parse(Request.QueryString["num"].ToString());
// cria X campos conforme usuário informou no default.aspx
for (int cont = 0; cont < contCampos; cont++)
{
linha = new TableRow();
celula = new TableCell();
// cria o textBox
campo = new TextBox();
campo.ID = PREFIXO + cont.ToString();
campo.Width = Unit.Pixel(40); // 40 pixels
campo.Text = random.Next(0, 9999).ToString();
// joga em componentes
celula.Controls.Add(campo);
linha.Cells.Add(celula);
// joga pra página
this.Table1.Rows.Add(linha);
}
}
protected void btnVoltar_Click(object sender, EventArgs e)
{
Response.Redirect("Default.aspx");
}
protected void btnOrdenar_Click(object sender, EventArgs e)
{
// nao tem query cai fora
if (Request.QueryString["num"] == null)
return;
int contCampos = int.Parse(Request.QueryString["num"].ToString());
int[] vetor = new int[contCampos];
// percorre os campos na tela
for (int cont = 0; cont < contCampos; cont++)
{
// usa o findcontrol para achar nossos textBox
TextBox txt = (TextBox)this.Table1.FindControl(PREFIXO + cont.ToString());
if (txt != null)
{
// joga o text deles num vetor
vetor[cont] = int.Parse(txt.Text);
}
}
// ordena o vetor
Array.Sort(vetor);
// joga no response o vetor ordenado
foreach (int cont in vetor)
{
Response.Write(cont);
Response.Write("<br>");
}
}
}