Pular para o conteúdo principal

Criar TextBox dinamicamente com Asp.Net. "Add TextBox Runtime"



Estou postando um exemplo de página que adiciona controles dinamicamente no formulário. Neste exemplo eu utilizei vários UpdatePanel com Triggers configuradas e, em especial, o controle PlaceHolder. Este controle guarda todos os controles adicionados dinamicamente. A mágica deste código é que eu não preciso ficar remontando os controles toda vez que a página faz uma requisição ao servidor.

Código da página .aspx:



<%@ Page Language="C#" AutoEventWireup="true" CodeFile="AddControlDinamyc.aspx.cs"
    Inherits="AddControlDinamyc" %>

<!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>Add Control Dinamyc Asp.Net</title>  
</head>
<body>
    <form id="form1" runat="server" method="post">
    <div>
        <asp:ScriptManager ID="ScriptManager1" runat="server">
        </asp:ScriptManager>
        <asp:UpdatePanel ID="UpdatePanel1" runat="server">
            <Triggers>              
                <asp:AsyncPostBackTrigger ControlID="Button2" EventName="click" />
            </Triggers>
            <ContentTemplate>            
                <asp:CheckBoxList ID="CheckBoxList1" runat="server">
                    <asp:ListItem Value="0">unidade</asp:ListItem>
                    <asp:ListItem Value="1" Text="numero">
                    </asp:ListItem>
                    <asp:ListItem Value="2" Text="id">
                    </asp:ListItem>
                    <asp:ListItem Value="3" Text="nome">
                    </asp:ListItem>
                    <asp:ListItem Value="4" Text="Entre R$ 500 mil e R$ 750 mil">
                    </asp:ListItem>
                    <asp:ListItem Value="5" Text="Entre R$ 750 mil e R$ 1 milhão">
                    </asp:ListItem>
                    <asp:ListItem Value="6" Text="Acima de R$ 1 milhão">
                    </asp:ListItem>
                </asp:CheckBoxList>
            </ContentTemplate>
        </asp:UpdatePanel>
        <asp:UpdatePanel ID="UpdatePanel2" runat="server" UpdateMode="Conditional">        
            <ContentTemplate>
                <asp:PlaceHolder ID="PlaceHolder1" runat="server"></asp:PlaceHolder>
            </ContentTemplate>
        </asp:UpdatePanel>
        <div id="divControls">
        </div>      
        <asp:Button ID="Button2" runat="server" Text="Adicionar Filtros Selecionados" OnClick="Button2_Click" />
        <br />
        <asp:UpdatePanel ID="UpdatePanel3" runat="server" UpdateMode="Conditional" ChildrenAsTriggers="false">
            <Triggers>
                <asp:AsyncPostBackTrigger ControlID="Button1" EventName="click" />
            </Triggers>
            <ContentTemplate>
                <asp:Button ID="Button1" runat="server" Text="Ler Filtros" OnClick="Button1_Click" />
            </ContentTemplate>
        </asp:UpdatePanel>
        <asp:UpdatePanel ID="UpdatePanel4" runat="server" UpdateMode="Conditional">
            <Triggers>
                <asp:AsyncPostBackTrigger ControlID="Button1" EventName="click" />
            </Triggers>
            <ContentTemplate>
                <asp:Label ID="lblControleNome" runat="server" Text=""></asp:Label>
            </ContentTemplate>
        </asp:UpdatePanel>
        <asp:HiddenField ID="hdArrayCodigos" runat="server" />
    </div>
    </form>  
</body>
</html>



Código do .cs da página .aspx:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;

public partial class AddControlDinamyc : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {

    }

    protected void Button1_Click(object sender, EventArgs e)
    {     

        lblControleNome.Text = this.Request.Form["txt0"];
        lblControleNome.Text += this.Request.Form["txt1"];
        lblControleNome.Text += this.Request.Form["txt2"];
        lblControleNome.Text += this.Request.Form["txt3"];
        lblControleNome.Text += this.Request.Form["txt4"];
        lblControleNome.Text += this.Request.Form["txt5"];
        lblControleNome.Text += this.Request.Form["txt6"];

        lblControleNome.Text += this.Request.Form["txtNome"];

    }

    protected void Button2_Click(object sender, EventArgs e)
    {
        foreach (ListItem item in CheckBoxList1.Items)
        {
            if (item.Selected)
            {
                TextBox textbox1 = new TextBox();
                textbox1.ID = "txt" + item.Value;
                textbox1.Text = item.Text;
                
                PlaceHolder1.Controls.Add(textbox1);
                PlaceHolder1.Controls.Add(new HtmlGenericControl("br"));
            }
        }

        UpdatePanel2.Update();
        
    }

}


Comentários

Natalie disse…
Muito Bom, me ajudou bastante.

Postagens mais visitadas deste blog

EmguCV DLL Not Found Exception -Unable to find cvextern?

Eu também tive os mesmos problemas. Neste fórum emgucv , não sei por que cvextern.dlldo emgucv 3.4.3 não é possível carregar cvextern (porque não é possível encontrar cvextern), e você permitiu usar o arquivo cvextern.dlldo emgucv 3.4.2 (certifique-se de escolher x64 / x86), copie /bin/Debuge este arquivo é encontrado automaticamente /bin/Debug/x86ou /bin/Debug/x64quando você termina de construir o programa no Visual Studio.  O Erro:  The type initializer for 'Emgu.CV.CvInvoke' threw an exception. : Unable to load DLL 'cvextern': The specified module could not be found. (Exception from HRESULT: 0x8007007E)  Para resolver o problema copia a pasta x64 ou x86 para dentro da pasta bin da aplicação. Ou copie os arquivos para dentro da pasta bin da aplicação WCF.

Vagas .Net - Projeto CNSA

Prezados, Estamos selecionando candidados, em forma de cadastro de reserva, para participar do projeto: Cadastro Nacional de Sociedade de Advogados, na Assessoria de Tecnologia da Informação do Conselho Federal da OAB. Basicamente teremos 3 fases: * Avaliação Curricular; * Entrevista Pessoal; * Verificação prática; Outras informações: Vaga: Desenvolvedor .NET. Quantidade: 3. Tempo: 4 meses. Segue abaixo os requisitos que devem ser atendidos pelo candidato: Conhecimentos básicos * Conhecimento avançado em C#; * Conhecimento em ASP.NET 2.0; * ADO.NET 2.0; * SQL SERVER 2005 (DML, stored procedures, MER); * UML (Interpretação de casos de uso, diagrama de atividades, de classe, de sequência); * Experiência em projetos anteriores com ASP.NET e C#; Desejável * LINQ TO SQL; * Conhecimento em JavaScript e padrões Web (XHTML, CSS, etc); * ASP.NET 3.5; * C# 3.0 (LINQ, Propriedade implementadas automaticamente, Métodos de Extensão, Expressão Lamb...

Lista de IPs DNS Oi nos Estados

As vezes quando colocamos um IP fixo para uma máquina na rede, e esta rede tem acesso a internet através da rede da Oi, bem provável que você não conseguirá acessar a internet. Para resolver o problema defina o DNS primário e Secundário nas propriedades da placa de rede. - Protocolo TCP/IP Versão 4 (TCP/IPv4). Segue lista de DNS por estado. RS 201.10.1.2 201.10.120.3 SC 201.10.120.3 201.10.1.2 PR 201.10.120.2 201.10.128.3 GO 201.10.128.3 201.10.120.3 DF 201.10.128.2 201.10.120.2 MS 201.10.128.3 201.10.1.2 MT 201.10.128.2 201.10.120.3 RO/AC 201.10.128.2 201.10.1.2