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

04/08/2014

Celiol.

Nossa galera nada ainda ja adicionei o outro botão e o código para salvar os novos dados como podem ver no código do comentário acima porem ele ainda ja vem com as informações que foram preenchidas do banco de dados e não esta alterando.
Responder

06/08/2014

Celiol.

Nossa agora tentei colocar os textbox como null pra depois fazer a comparação e assim atribuir os valores atualizados na entidade cliente porém ele não deu certo.


Xiiii galera não sei onde esta o erro mas já comparei com um aqui que eu fiz e ta tudo certo.

Alguém ta vendo algo que estou deixando passar ?

Grato. Miller.
Responder

06/08/2014

Celiol.

Nossa agora tentei colocar os textbox como null pra depois fazer a comparação e assim atribuir os valores atualizados na entidade cliente porém ele não deu certo.


Xiiii galera não sei onde esta o erro mas já comparei com um aqui que eu fiz e ta tudo certo.

Alguém ta vendo algo que estou deixando passar ?

Grato. Miller.
Responder

06/08/2014

Joel Rodrigues

Você está usando Entitfy Farmework? Se sim, após definir as propriedades do objeto cliente, altere o estado do objeto para alterado.
Responder

06/08/2014

Celiol.

Sim estou trabalhando com entity.
Responder

08/08/2014

Celiol.

Nao entendi joel, voce fala pra eu chamar o metodo saveChange?
ou algo assim.
Responder

09/08/2014

Joel Rodrigues

No objeto Cliente, tem uma propriedade que não lembro o nome agora. Acho que é State ou ObjectState, que define se ela foi alterada. Talvez modificando ela, o EF entenda que esse objeto foi modificado e precisa ser atualizado.
Responder

20/08/2014

Celiol.

Nossa Joel ja tentei de tudo mas nao encontrei nada parecido com esse nome nao cara.
O que tem aqui é o EntityState seria isso que esta falando? Se for tem outro problema pois pelo que vi ele é mais pra eu comparar cara.

DeliveryTI.
Responder

20/08/2014

Joel Rodrigues

Você tentou alterar essa propriedade, como eu sugeri?
Responder

20/08/2014

Celiol.

Sim.
Responder

21/08/2014

Joel Rodrigues

Tente assim:
// modificar o objeto "cliente", alterando suas propriedades conforme necessário
context.Entry(cliente).State = EntityState.Modified;
context.SaveChanges();

Onde:
- context é a instância do DBContext;
- cliente é a instância do tipo Cliente, que é a entidade;
Responder

21/08/2014

Celiol.

Joel o que ta acontecendo ainda e o seguinte cara eu tentei varias outras coisas aqui que sei pra atualizar os dados porem ele nem esta passando o novo valor que eu digito porque como os textbox ja vem com os dados ele ja atribui para a instancia e nao passa o novo dado que eu digitei.
Coloquei um brackPoint bem nessa linha para ver o que ele esta passando para instancia cliente e ele esta passando os mesmo dados que vem do banco.

        clientes.Update(cliente);


E nas linhas que eu alterei coloquei um brack para ver se passa o dado que eu alterei e ele nao passa na verdade quando vou ver o que tem ja tem o dado que vem do banco.
Por exemplo, no textbox endereco ele carrega o dado (Riachos), quando vou ver antes de editar ja esta la na entidade cliente.endereco (Riachos), ai eu edito o dado para (RIacho Verde) e quando o cai no backpoint ele me leva na no cliente.endereco, mas la nao foi atualizado continua apenas (Riachos).

Tentei antes de passar os dados para a entidade cliente, colocar os textbox tudo como null, mas ai quando eu executei a aplicacao ele deu erro ao tentar carregar a pagina (object no contain elements).

Qual sera a saida agora.

Grato DeliveryTI.
Responder

21/08/2014

Celiol.

Ha Joel eu vi isso em algum lugar pesquisando aqui cara porem esse (Entry) e tambem o (EntityState) nao consigo corrigir de maneira alguma nem importando o (using System.Web.HttpContext) ele diz que nao contem uma definicao.

Xiiiii, ta dificil a coisa aqui viu.
Responder

01/09/2014

Celiol.

Alguem pode ajudar ainda nao resolvi galera.
Responder

01/09/2014

Joel Rodrigues

Lá no método btnSave_Click, coloque um breapoint na seguinte linha:
clientes.Update(cliente);

Verifique o conteúdo das objeto cliente, se ele foi ou não alterado neste ponto.
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