Array
(
)

Editar dados de Usuarios

Delivery-ti
|
MVP
Pontos: 525
    22 jul 2014

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:
#Código

  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...
#Código
    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
#Código
   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.

Joel Rodrigues
   - 23 jul 2014

Seria bom que você dissesse qual é o erro.

0
|
0

Delivery-ti
|
MVP
Pontos: 525
    23 jul 2014

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.

#Código

             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;
                    }
                }

0
|
0

Delivery-ti
|
MVP
Pontos: 525
    28 jul 2014

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:
#Código


    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

0
|
0

Delivery-ti
|
MVP
Pontos: 525
    29 jul 2014

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?

0
|
0

Delivery-ti
|
MVP
Pontos: 525
    29 jul 2014

Ola galera alguem pra da uma ajuda?

0
|
0

Delivery-ti
|
MVP
Pontos: 525
    29 jul 2014

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:

#Código

              //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

0
|
0

Joel Rodrigues
   - 30 jul 2014

Essa variável codCLi é do tipo int?

0
|
0

Delivery-ti
|
MVP
Pontos: 525
    30 jul 2014

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:

#Código

   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.

#Código
    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.

0
|
0

Delivery-ti
|
MVP
Pontos: 525
    30 jul 2014

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:

#Código

   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.

#Código
    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.

0
|
0

Joel Rodrigues
   - 31 jul 2014

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

0
|
0

Delivery-ti
|
MVP
Pontos: 525
    31 jul 2014

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..

0
|
0

Delivery-ti
|
MVP
Pontos: 525
    01 ago 2014

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?

0
|
0

Delivery-ti
|
MVP
Pontos: 525
    01 ago 2014

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:

#Código

    //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

0
|
0

Joel Rodrigues
   - 01 ago 2014

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.

0
|
0

Delivery-ti
|
MVP
Pontos: 525
    02 ago 2014

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

#Código

     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.

0
|
0

Delivery-ti
|
MVP
Pontos: 525
    04 ago 2014

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.

0
|
0

Delivery-ti
|
MVP
Pontos: 525
    06 ago 2014

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.

0
|
0

Delivery-ti
|
MVP
Pontos: 525
    06 ago 2014

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.

0
|
0

Joel Rodrigues
   - 06 ago 2014

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

0
|
0

Delivery-ti
|
MVP
Pontos: 525
    06 ago 2014

Sim estou trabalhando com entity.

0
|
0