none
Linha de DataTable duplicando ao preencher em tempo de execução. RRS feed

  • Pergunta

  • Boa tarde pessoal, estou tentando preencher um datatable em tempo de execução através dos dados digitados via dois textbox. O código está ok, porém se eu der um F5 na página ele acaba adicionando o ultimo registro novamente, alguém tem uma ideia de como posso resolver isso?

    O código é esse:

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Web.UI;
    using System.Data;
    
    namespace ManipularDataTable
    {
        public partial class WebForm1 : System.Web.UI.Page
        {
            public static DataTable dte;
    
            public void Page_Load(object sender, EventArgs e)
            {
                
            }
    
            private DataTable construirDataTable()
            {
                DataTable dt = new DataTable("tblusuario");
                dt.Columns.Add("usuario", typeof(string));
                dt.Columns.Add("senha", typeof(string));
                return dt;
            }
    
    
            protected void BtAdicionar_Click(object sender, EventArgs e)
            {
    
                if (dte == null)
                {
                    dte = construirDataTable();
                }
    
                if ((TextBox1.Text.Length > 0) && (TextBox2.Text.Length > 0))
                {
                    dte.Rows.Add(TextBox1.Text, TextBox2.Text);
                    GvUsuarios.DataSource = dte;
                    carregagrid();
                }
            }
    
            private void carregagrid()
            {
                GvUsuarios.DataBind();
                TextBox1.Text = "";
                TextBox2.Text = "";
            }
        }
    }

    sexta-feira, 11 de outubro de 2013 18:44

Respostas

  • Ederson

    O problema no seu caso é o postback. É click do botão carregando a mesma página.

    Existem várias maneiras de retirar isso.

    No Page_Load você pode colocar uma verificação if(!Page.IsPostBack) { .. adicionar um código } 

    Ou então depois de inserir, você fazer um redirect para a mesma página. Assim se der F5 ele não insere novamente.

    Só uma sugestão, não coloque o objeto como estático na página como você fez. É melhor você adicionar no banco logo no clique.


    Espero ter ajudado. Se ajudei, favor marcar no fórum falando que foi útil.

    Mauricio Junior - Comunidade www.ecode10.com

    sábado, 12 de outubro de 2013 03:42
  • Cuidado com Static também!

    Vixe todos podem compartilhar isso!

    Cuidado!

    E segue resposta de Mauricio Junior!


    Fúlvio Cezar Canducci Dias

    • Marcado como Resposta Giovani Cr segunda-feira, 14 de outubro de 2013 19:37
    sábado, 12 de outubro de 2013 14:00

Todas as Respostas

  • Ederson

    O problema no seu caso é o postback. É click do botão carregando a mesma página.

    Existem várias maneiras de retirar isso.

    No Page_Load você pode colocar uma verificação if(!Page.IsPostBack) { .. adicionar um código } 

    Ou então depois de inserir, você fazer um redirect para a mesma página. Assim se der F5 ele não insere novamente.

    Só uma sugestão, não coloque o objeto como estático na página como você fez. É melhor você adicionar no banco logo no clique.


    Espero ter ajudado. Se ajudei, favor marcar no fórum falando que foi útil.

    Mauricio Junior - Comunidade www.ecode10.com

    sábado, 12 de outubro de 2013 03:42
  • Cuidado com Static também!

    Vixe todos podem compartilhar isso!

    Cuidado!

    E segue resposta de Mauricio Junior!


    Fúlvio Cezar Canducci Dias

    • Marcado como Resposta Giovani Cr segunda-feira, 14 de outubro de 2013 19:37
    sábado, 12 de outubro de 2013 14:00