Editar dados de Usuarios

22/07/2014

0

Ola preciso de uma ajudinha aqui galera. É o seguinte tenho um link que aparece o nome do usuario quando esta logado, e quando ele esta logado e clicar nesse link com seu nome, eu o direciona para uma pagina (meusDados.aspx) que estou tentando carregar os dados dele. Porem quero que ao carregar a pagina os dados dele ja venha carregado nos campos mas apenas para leitura. Entao fiz assim:
  protected void Page_Load(object sender, EventArgs e)
        {
            btnCadCli.Text = "Atualizar";
            pnldadosCLi.Visible = false;
          

                if (Session["cliente"] != null)
                {
                    pnldadosCLi.Visible = true;
                }

            if (IsPostBack)
            {

      //ha galera se alguem tambem puder ajudar nao sei se esta correto assim, mas aqui tenho que passar o codigo do cliente que esta logado para variavel, tenho que pegar pela session o codigo mas nao sei bem como fazer.

                codCLi = cliente.codCliente;

                cliente = clientes.Find(c => c.codCliente == codCLi).First<CLIENTE>();
                    
                txtCpfCli.Text = cliente.cpfCliente;
                txtNomeCli.Text = cliente.nomeCliente;
                dtlEstCli.SelectedValue = cliente.estadoCliente;
                txtCidCli.Text = cliente.cidadeCliente;
                txtEndCli.Text = cliente.enderecoCliente;
                txtMailCli.Text = cliente.emailCliente;
                txtFoneCli.Text = cliente.foneCliente;

         //aqui e para nao deixar ele alterar os dados apenas ler
                txtCpfCli.Enabled = false;
                txtNomeCli.Enabled = false;
                dtlEstCli.Enabled = false;
                txtCidCli.Enabled = false;
                txtEndCli.Enabled = false;
                txtMailCli.Enabled = false;
                txtFoneCli.Enabled = false;
            }


ai apos ele ver os dados se ele clicar no botao atualizar os campos sao liberados com os dados para ele editar, e o botao muda para salvar. Esta assim...
    protected void btnCadCli_Click(object sender, EventArgs e)
        {
//agora estou habilitando os campos para que ele possa editar
            txtCpfCli.Enabled = true;
            txtNomeCli.Enabled = true;
            dtlEstCli.Enabled = true;
            txtCidCli.Enabled = true;
            txtEndCli.Enabled = true;
            txtMailCli.Enabled = true;
            txtFoneCli.Enabled = true;

           btnCadCli.Text = "Salvar";

   //este é o metodo que chamo para realmente ele atualizar os dados (salvar no banco), o codigo dele esta abaixo
            AtualizarCLiente();

            cliente = null;
            clientes = null;
        }


aqui esta o codigo desse metodo que chamei no click do botao

   public void AtualizarCLiente()
        {
            codCLi = int.Parse(txtCpfCli.Text);
            cliente = clientes.Find(c => c.codCliente == codCLi).First<CLIENTE>();

            cliente.cpfCliente = txtCpfCli.Text;
            cliente.nomeCliente = txtNomeCli.Text;
            cliente.estadoCliente = dtlEstCli.SelectedValue;
            cliente.cidadeCliente = txtCidCli.Text;
            cliente.enderecoCliente = txtEndCli.Text;
            cliente.emailCliente = txtMailCli.Text;
            cliente.foneCliente = txtFoneCli.Text;

            clientes.Update(cliente);
            clientes.SaveChanges();

            cliente = null;
            clientes = null;
        }


bem galera esta dando um erro alguem sabe o que pode ser, ou tem algum jeito melhor pra eu fazer isso?

Grato Delivery TI.
Celiol.

Celiol.

Responder

Posts

23/07/2014

Joel Rodrigues

Seria bom que você dissesse qual é o erro.
Responder

23/07/2014

Celiol.

Nossa Joel todas as perguntas e você quem responde:? kkkk
Então você que é o cara no asp.

Então Joel a principio quero arrumar o problema que citei logo no inicio do código no pageLoad, pois eu coloquei o código para assim que a pagina for carregada os textBox ser preenchidos com os dados do cliente mas isso não acontece.

Acredito que é por causa dessa comparação que tenho que fazer para saber de qual cliente devo carregar os dados deve estar errada então ele não traz nada. Ta certo esse código meu para pegar o codigo do cliente pela session ?

Para simplificar eu tenho que pegar o código do usuario que esta logado, fazer uma query que realize a pesquisa na tabela e encontre os dados cujo codigo seja do cliente logado e carregar os dados nos textBox acho que isso esta dando erro. Olha como fiz.

             protected void Page_Load(object sender, EventArgs e)
        {
            btnCadCli.Text = "Atualizar";
            btnSalvarProf.Text = "Atualizar";

            pnldadosCLi.Visible = false;
            pnldadosProf.Visible = false;

                if (Session["cliente"] != null)
                {
                    pnldadosCLi.Visible = true;

                    if (IsPostBack)
                    {
    //olha aqui é onde ele pega o codigo do cliente e atribui a variavel,  mas acho que esta errado pois ele deve passar o codigo do cliente que esta na session
                        codCLi = cliente.codCliente;

    //aqui é onde ele faz a comparacao para saber se o codigo existe  no banco 
                        cliente = clientes.Find(c => c.codCliente == codCLi).First<CLIENTE>();

   //e aqui ele passa os dados para os textBox 
  //nao sei o que esta errado alem de pegar o codigo da session
                        txtCpfCli.Text = cliente.cpfCliente;
                        txtNomeCli.Text = cliente.nomeCliente;
                        dtlEstCli.SelectedValue = cliente.estadoCliente;
                        txtCidCli.Text = cliente.cidadeCliente;
                        txtEndCli.Text = cliente.enderecoCliente;
                        txtMailCli.Text = cliente.emailCliente;
                        txtFoneCli.Text = cliente.foneCliente;

                        txtCpfCli.Enabled = false;
                        txtNomeCli.Enabled = false;
                        dtlEstCli.Enabled = false;
                        txtCidCli.Enabled = false;
                        txtEndCli.Enabled = false;
                        txtMailCli.Enabled = false;
                        txtFoneCli.Enabled = false;
                    }
                }
Responder

28/07/2014

Celiol.

Entao joel ele da um erro Sequence contains no elements, porem quando eu clico no nome do usuario que esta na Session ele nao carrega as informações do usuario nos textBox sabe o que pode estar errado?

Olha como esta meu codigo:

    if (Session["cliente"] != null)
                {
                    pnldadosCLi.Visible = true;

                    if (IsPostBack)
                    {
                        //codCLi = int.Parse(Session.SessionID);
                        cliente = clientes.Find(c => c.codCliente == codCLi).First<CLIENTE>();

                        txtCpfCli.Text = cliente.cpfCliente;
                        txtNomeCli.Text = cliente.nomeCliente;
                        dtlEstCli.SelectedValue = cliente.estadoCliente;
                        txtCidCli.Text = cliente.cidadeCliente;
                        txtEndCli.Text = cliente.enderecoCliente;
                        txtMailCli.Text = cliente.emailCliente;
                        txtFoneCli.Text = cliente.foneCliente;
                        lblDC.Text = cliente.dataCadastroCliente.ToString();

                        txtCpfCli.ReadOnly = true;
                        txtNomeCli.ReadOnly = true;
                        dtlEstCli.Enabled = false;
                        txtCidCli.ReadOnly = true;
                        txtEnd.ReadOnly = true;
                        txtMailCli.ReadOnly = true;
                        txtFoneCli.ReadOnly = true;
                    }


Este codigo esta dentro do pagLoad que era pra ele carregar os dados do cliente que esta session quando ele carregar a pagina porem ele nao carrega os campos com os dados.

Acredito que é porque minha comparação da session nao esta correga. Como eu faço para pegar o codigo do usuario que esta na session?

Grato Delivery TI
Responder

29/07/2014

Celiol.

Ola galera consegui carregar agora os dados do cliente nos textBox quando ele esta logado e clica no nome, porem ele esta sempre pegando o primeiro cliente do banco. é o problema que estou tendo de como pegar o código do cliente que esta na session mesmo ai sim ele traz os dados correto alguem sabe como faço para pegar esse código?
Responder

29/07/2014

Celiol.

Ola galera alguem pra da uma ajuda?
Responder

29/07/2014

Celiol.

Ola Joel estou tentando aqui e agora que to quase la cara estou tetando pegar o codigo do usuario que esta locado para que eu possa passar todos seus dados e ai sim poder editar, porem quando eu clico em editar ele da um erro:

Unable to cast object of type 'System.Int32' to type 'maos.DAO.CLIENTE'.

Esta é a mensagem de erro porem dei uma pesquisada na net e achei no forum MSDN que eu deveria fazer assim:

              //olha so estou tentando passar o codigo do cliente para a variavel codCli

                codCLi = ((CLIENTE)Session["cliente"]).codCliente;

        //aqui estou pesquisando o codigo do cliente que esta na session e passando os dados dele para os textBox
                 cliente = clientes.Find(c => c.codCliente == codCLi).First<CLIENTE>();

                txtCodCli.Text = cliente.codCliente.ToString();
                txtCpfCli.Text = cliente.cpfCliente;
                txtNomeCli.Text = cliente.nomeCliente;
                dtlEstCli.SelectedValue = cliente.estadoCliente;
                txtCidCli.Text = cliente.cidadeCliente;
                txtEndCli.Text = cliente.enderecoCliente;
                txtMailCli.Text = cliente.emailCliente;
                txtFoneCli.Text = cliente.foneCliente;
                lblDC.Text = cliente.dataCadastroCliente.ToString();


mas nao da certo cara tem como da uma ajudinha?

Delivery TI
Responder

30/07/2014

Joel Rodrigues

Essa variável codCLi é do tipo int?
Responder

30/07/2014

Celiol.

Então Joelela é sim mas deu certo cara pelo menos a parte de carregar os dados do cliente nos textbox mas o meu editar nao funcionou tem como dar uma forma, na veradde os textBox vem com os dados do cliente que esta loga. Porem ele só pode ler, apos ele clicar no botão atualizar ele pode editar os dados mas deu erro, ou melhor nao fez nada quando cliquei no botão ele apenas alterou o valor do botao para Salvar como defini mas nao alterou olha o codigo:

   protected void Page_Load(object sender, EventArgs e)
        {
            btnCadCli.Text = "Atualizar";
            btnSalvarProf.Text = "Atualizar";

            pnldadosCLi.Visible = false;
            pnldadosProf.Visible = false;

            if (Session["cliente"] != null)
            {
                codCLi = ((CLIENTE)Session["cliente"]).codCliente;
                
                pnldadosCLi.Visible = true;
                cliente = clientes.Find(c => c.codCliente == codCLi).First<CLIENTE>();

                txtCodCli.Text = cliente.codCliente.ToString();
                txtCpfCli.Text = cliente.cpfCliente;
                txtNomeCli.Text = cliente.nomeCliente;
                dtlEstCli.SelectedValue = cliente.estadoCliente;
                txtCidCli.Text = cliente.cidadeCliente;
                txtEndCli.Text = cliente.enderecoCliente;
                txtMailCli.Text = cliente.emailCliente;
                txtFoneCli.Text = cliente.foneCliente;
                lblDC.Text = cliente.dataCadastroCliente.ToString();
             }
             txtCpfCli.ReadOnly = true;
             txtNomeCli.ReadOnly = true;
             dtlEstCli.Enabled = false;
             txtCidCli.ReadOnly = true;
             txtEnd.ReadOnly = true;
             txtMailCli.ReadOnly = true;
             txtFoneCli.ReadOnly = true;
}

Bem aqui é apenas para ele carregar os dados no textBox quando o cara clicar para em "Meus Dados" blz.

    protected void btnCadCli_Click(object sender, EventArgs e)
        {
            txtCpfCli.Enabled = true;
            txtNomeCli.Enabled = true;
            dtlEstCli.Enabled = true;
            txtCidCli.Enabled = true;
            txtEndCli.Enabled = true;
            txtMailCli.Enabled = true;
            txtFoneCli.Enabled = true;

    //aqui chamo o metodo que atualiza os dados do cliente
            AtualizarCLiente();

            cliente = null;
            clientes = null;
        }

//metodo que atualiza os dados 
  public void AtualizarCLiente()
        {
            codCLi = int.Parse(txtCodCli.Text);
            cliente = clientes.Find(c => c.codCliente == codCLi).First<CLIENTE>();

            cliente.cpfCliente = txtCpfCli.Text;
            cliente.nomeCliente = txtNomeCli.Text;
            cliente.estadoCliente = dtlEstCli.SelectedValue;
            cliente.cidadeCliente = txtCidCli.Text;
            cliente.enderecoCliente = txtEndCli.Text;
            cliente.foneCliente = txtFoneCli.Text;
            cliente.emailCliente = txtMailCli.Text;

            clientes.Update(cliente);
            clientes.SaveChanges();

            cliente = null;
            clientes = null;
        }


Bem Joel se puder da uma força nisso cara fico muito agradecido, tive que dar uma pequena parada nessa parte pois agora estou tentando fazer a integração com a API de assinatudo do pagSeguro mas ta F#d@ cara aqui no site tem algum tutorial ou video? Sabe me dizer. OU ja fez isso cara.
Responder

30/07/2014

Celiol.

Então Joelela é sim mas deu certo cara pelo menos a parte de carregar os dados do cliente nos textbox mas o meu editar nao funcionou tem como dar uma forma, na veradde os textBox vem com os dados do cliente que esta loga. Porem ele só pode ler, apos ele clicar no botão atualizar ele pode editar os dados mas deu erro, ou melhor nao fez nada quando cliquei no botão ele apenas alterou o valor do botao para Salvar como defini mas nao alterou olha o codigo:

   protected void Page_Load(object sender, EventArgs e)
        {
            btnCadCli.Text = "Atualizar";
            btnSalvarProf.Text = "Atualizar";

            pnldadosCLi.Visible = false;
            pnldadosProf.Visible = false;

            if (Session["cliente"] != null)
            {
                codCLi = ((CLIENTE)Session["cliente"]).codCliente;
                
                pnldadosCLi.Visible = true;
                cliente = clientes.Find(c => c.codCliente == codCLi).First<CLIENTE>();

                txtCodCli.Text = cliente.codCliente.ToString();
                txtCpfCli.Text = cliente.cpfCliente;
                txtNomeCli.Text = cliente.nomeCliente;
                dtlEstCli.SelectedValue = cliente.estadoCliente;
                txtCidCli.Text = cliente.cidadeCliente;
                txtEndCli.Text = cliente.enderecoCliente;
                txtMailCli.Text = cliente.emailCliente;
                txtFoneCli.Text = cliente.foneCliente;
                lblDC.Text = cliente.dataCadastroCliente.ToString();
             }
             txtCpfCli.ReadOnly = true;
             txtNomeCli.ReadOnly = true;
             dtlEstCli.Enabled = false;
             txtCidCli.ReadOnly = true;
             txtEnd.ReadOnly = true;
             txtMailCli.ReadOnly = true;
             txtFoneCli.ReadOnly = true;
}

Bem aqui é apenas para ele carregar os dados no textBox quando o cara clicar para em "Meus Dados" blz.

    protected void btnCadCli_Click(object sender, EventArgs e)
        {
            txtCpfCli.Enabled = true;
            txtNomeCli.Enabled = true;
            dtlEstCli.Enabled = true;
            txtCidCli.Enabled = true;
            txtEndCli.Enabled = true;
            txtMailCli.Enabled = true;
            txtFoneCli.Enabled = true;

    //aqui chamo o metodo que atualiza os dados do cliente
            AtualizarCLiente();

            cliente = null;
            clientes = null;
        }

//metodo que atualiza os dados 
  public void AtualizarCLiente()
        {
            codCLi = int.Parse(txtCodCli.Text);
            cliente = clientes.Find(c => c.codCliente == codCLi).First<CLIENTE>();

            cliente.cpfCliente = txtCpfCli.Text;
            cliente.nomeCliente = txtNomeCli.Text;
            cliente.estadoCliente = dtlEstCli.SelectedValue;
            cliente.cidadeCliente = txtCidCli.Text;
            cliente.enderecoCliente = txtEndCli.Text;
            cliente.foneCliente = txtFoneCli.Text;
            cliente.emailCliente = txtMailCli.Text;

            clientes.Update(cliente);
            clientes.SaveChanges();

            cliente = null;
            clientes = null;
        }


Bem Joel se puder da uma força nisso cara fico muito agradecido, tive que dar uma pequena parada nessa parte pois agora estou tentando fazer a integração com a API de assinatudo do pagSeguro mas ta F#d@ cara aqui no site tem algum tutorial ou video? Sabe me dizer. OU ja fez isso cara.
Responder

31/07/2014

Joel Rodrigues

Não vi aí onde é que você habilita os campos para edição. E onde você chama essa função AtualizarCliente?
Responder

31/07/2014

Celiol.

O loco joel logo no começo dessa ultima pergunta que fiz cara esta já no evento do botão cadCLiente, ja começo habilitando os campos e logo abaixo chamo o método atualizar de uma olhada como esta. Mas estou tentando aqui e acho vai..
Responder

01/08/2014

Celiol.

E ai joel blz cara eu to tentando aqui mas ainda não consegui nada. Não da nenhum erro porem ele não salva com os novos dados, e apos eu clicar no botao salvar ele mostra os mesmos dados e nao o dado atualizado.

Pode dar uma força?
Responder

01/08/2014

Celiol.

Joel olha cara acabei de ver aqui o que esta acontecendo se acredita cara que passei varias vezes pelo erro mas demorou pra cair minha fixa...kkkk.

Bem é seguinte, o que esta acontecendo é que quando eu clico em (editar dados) ele me direciona para a pagina dos dados tudo blz e os campos desabilitados, ai quando eu clico no botao atualizar ele esta desabilitando os botoes. porem eu coloquei uns brackPoints no evento atualizar dados e olha o que ta acontecendo, os textBox obviamente ja estão recebendo os dados que vem do cliente logado, ai quando eu altera algo ele nao passa la para o campo pois ja esta preenchido, olha o que ele fez depois que habilitou os campos:

    //método que atualiza os dados 
  public void AtualizarCLiente()
        {
  //olha essa linha eu alterei pois tem que ser o código do cliente que esta logado (da session)
            codCLi = int.Parse(txtCodCli.Text);

//esta correto assim Joel passar o código do usuário na session?
           codCli = ((CLIENTE)Session["cliente"]).codCliente;

//bem agora vai vendo o que aconteceu com os brackPoints

//aqui nessa linha coloquei um (e na instancia do cliente ele ja tinha os dados) acredito que ate aqui tudo blz pois os dados vem do banco carregado no textBox
            cliente = clientes.Find(c => c.codCliente == codCLi).First<CLIENTE>();
 
//aqui os dados que quero alterar ja estao com os valores passando para uma instancia do cliente tambem os mesmo que foram carregados do banco
            cliente.cpfCliente = txtCpfCli.Text;
            cliente.nomeCliente = txtNomeCli.Text;
            cliente.estadoCliente = dtlEstCli.SelectedValue;
            cliente.cidadeCliente = txtCidCli.Text;
            cliente.enderecoCliente = txtEndCli.Text;
            cliente.foneCliente = txtFoneCli.Text;
            cliente.emailCliente = txtMailCli.Text;
 
// aqui que percebi o problema quando ele me manda pra ca no brackpoint  dessa linha (cliente = clientes.Find(c => c.codCliente == codCLi).First<CLIENTE>();
//ai a hora que eu clico em continuar ele ja pula aqui para fazer o commit e salvar os dados mas nao os dados alterados e sim os dados que ja vieram do banco
//entendeu agora o problema, como tenho que fazer para alterar esses dados antes dele mandar salvar?
            clientes.Update(cliente);
            clientes.SaveChanges();
 
            cliente = null;
            clientes = null;
        }


Grato Delivery TI
Responder

01/08/2014

Joel Rodrigues

Pois é, amigo, foi isso que eu vi. Você estava habilitando os campos e salvando os dados imediatamente, aí acontecia isso que você viu.
Voce vai precisar de OUTRO BOTÃO para salvar os dados. Um para habilitar os campos e outro para salvar.
Responder

02/08/2014

Celiol.

Xii Joel tentei cara ja com outro botão mas também nao funcionou olha como esta agora com o botao salvar:

     protected void btnSave_Click(object sender, EventArgs e)
        {
            codCliente = txtCpfCli.Text;
            cliente = clientes.Find(c => c.cpfCliente == codCliente).First<CLIENTE>();

            cliente.cpfCliente = txtCpfCli.Text;
            cliente.nomeCliente = txtNomeCli.Text;
            cliente.estadoCliente = dtlEstCli.SelectedValue;
            cliente.cidadeCliente = txtCidCli.Text;
            cliente.enderecoCliente = txtEndCli.Text;
            cliente.foneCliente = txtFoneCli.Text;
            cliente.emailCliente = txtMailCli.Text;
            cliente.dataCadastroCliente = DateTime.Now;

            clientes.Update(cliente);    
 //porem aqui quando vou ver os dados que vão ser salvos na entidade cliente são os mesmos na verdade ele nao esta passando os dados que eu atualizei e sim os que ja tem.
            clientes.SaveChanges();

            cliente = null;
            clientes = null;
        }


O que esta errado cara.
Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar