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

02/09/2014

Celiol.

Eu já fiz isso Joel e ele não está passando os novos dados que coloco mas sim os mesmos que já trouxe do banco.

Help Joel.
Responder

02/09/2014

Joel Rodrigues

Pode parecer repetitivo, mas preciso perguntar para entender o que está havendo.
Coloque novamente o breakpoint e verifique agora o conteúdo dos TextBoxes. Verifique se na propriedade Text deles está o conteúdo que você acabou de digitar, ou o conteúdo antigo.
Observação: certifique-se de digitar algo diferente nos TextBoxes.
Responder

09/09/2014

Celiol.

Joel cara nao expliquei o problema direito cara desculpa.

Na verdade o problema nao esta em passar um dado pela url, o problema é o seguinte eu tenho um datalist e trabalho com duas propriedades dele (ItemTemplate e o AlternateItemTemplate) acredito que voce saiba bem como eles funcionam, mas pra quem nao sabe eu eu carrego os meus dados do banco neles, e funciona assim primeiro dado ele atribui ao ItemTemplate o segundo ao AlternateItemTemplate e assim por diante alternando entre eles.
Pois bem e dentro de cada item desses eu tenho um botão que quando o cara clica leva ele para outra pagina mas que é relacionada ao dados do profissional que ele clicou, e para eu fazer um insert para este profissional eu preciso pegar o Código dele dentro desse ItemTemplate ou AlternateItemTemplate porem eu não sei como fazer para pegar esse código tentei assim:

Olha galera a tela com meus dados no datalist e esse codigo logo acima que eu tenho que passar na url

[img:descricao=Imagens do meu datalist]http://arquivo.devmedia.com.br/forum/imagem/335183-20140909-160353.png[/img]

Bem galera o maior problema pra vocês terem ideia é o seguinte, quando eu clicar em um profissional em algum item do meu datalist e pegar o codigo do profissional que ele clicou, pois aqui como so tenho dois profissionais, cada um tem um codigo o itemTemplate tem o codigo 1, e o AlternateItemTemplate tem o codigo 3, como podem ver na imagem, mas quando eu tiver cadastrar um terceiro profissional ele tambem vai aparecer em um ItemTamplate, e ai que ta o problema como eu pegar o codigo e passar pela url exatamente o que ele clicou.

Alguem pode ajudar por favor.

olha como eu populo meu Datalist:

    protected void dtlProfissionais_ItemDataBound(object sender, DataListItemEventArgs e)
        {
            if (e.Item.ItemType != ListItemType.Header && e.Item.ItemType != ListItemType.Footer)
            {
                if (Session["cliente"] != null)
                {
                    ((Image)e.Item.FindControl("imgProf")).ImageUrl = "http://localhost:3719/Servicos/" + ((PROFISSIONAL)e.Item.DataItem).fotoProf1.ToString();

                    ((Label)e.Item.FindControl("lblcodPr")).Text = ((PROFISSIONAL)e.Item.DataItem).codProfissional.ToString();

      // olha so galera aqui é onde ele pega o codigo do profisional para exibir na tela.

                    ((Label)e.Item.FindControl("lblnome")).Text = ((PROFISSIONAL)e.Item.DataItem).nomeProfissional;
                    ((Label)e.Item.FindControl("lblFonePr")).Text = ((PROFISSIONAL)e.Item.DataItem).foneProfissional;
                    ((Label)e.Item.FindControl("lblTipoProfi")).Text = ((PROFISSIONAL)e.Item.DataItem).TIPOPROFISSIONAL.descTipoProf;
                    ((Label)e.Item.FindControl("lblDesc")).Text = ((PROFISSIONAL)e.Item.DataItem).descProfissional;
                    }
                    ((Button)e.Item.FindControl("btnAval")).Visible = true;
                }
                else {
                    ((Label)e.Item.FindControl("Label6")).Visible = false;
                    ((Label)e.Item.FindControl("lblFonePr")).Visible = false;

                    ((Image)e.Item.FindControl("imgProf")).ImageUrl = "http://localhost:3719/Servicos/" + ((PROFISSIONAL)e.Item.DataItem).fotoProf1.ToString();

                    ((Label)e.Item.FindControl("lblcodPr")).Text = ((PROFISSIONAL)e.Item.DataItem).codProfissional.ToString();
                    ((Label)e.Item.FindControl("lblnome")).Text = ((PROFISSIONAL)e.Item.DataItem).nomeProfissional;
                    ((Label)e.Item.FindControl("lblFonePr")).Text = ((PROFISSIONAL)e.Item.DataItem).foneProfissional;
                    ((Label)e.Item.FindControl("lblTipoProfi")).Text = ((PROFISSIONAL)e.Item.DataItem).TIPOPROFISSIONAL.descTipoProf;
                    ((Label)e.Item.FindControl("lblDesc")).Text = ((PROFISSIONAL)e.Item.DataItem).descProfissional;
                }
}


Por favor algum da uma ajuda de como pegar esse codigo.

Grato Miller..
Responder

09/09/2014

Joel Rodrigues

Acho que você postou no tópico errado, não? A dúvida aqui não era sobre como editar os dados de um registro?
Responder

09/09/2014

Celiol.

Nossa Joel respondi sim cara nem percebi, era pra ser no "como passar dados pela URL" tem como postar lá ou devo comentar novamente?
Responder

10/09/2014

Celiol.

Galera esse ultimo comentário que fiz aqui pode desconsiderar alem de ter feito no post errado eu ja resolvi esse problema. Porem o problema com a edição de dados do cliente continuo com problemas galera se alguém souber o que esta de errado esta todo o código de minha edição dos dados aqui e o que esta dando erro.

Mas para quem chegar agora acontece o seguinte, eu clico em editar os dados ele carrega os dados nos textbox blz, quando clico em editar ele habilita os campos pra eu editar, porem quando eu altero por exemplo apenas o nome e dou um salvar, ele não passa o novo nome para minha entidade, fiz como o Joel me solicitou e vi no breakpoint que ele continua com as mesmas informações que ja trouxe do banco e não o que eu editei.

Grato Galera.
Responder

10/09/2014

Joel Rodrigues

Pode parecer repetitivo, mas preciso perguntar para entender o que está havendo.
Coloque novamente o breakpoint e verifique agora o conteúdo dos TextBoxes. Verifique se na propriedade Text deles está o conteúdo que você acabou de digitar, ou o conteúdo antigo.
Observação: certifique-se de digitar algo diferente nos TextBoxes.
Responder

10/09/2014

Celiol.

O Joel ai se ja ta me tirando kkkk, sou meio ruim mas nem pra tanto, sim cara coloquei o breackpoint mas ate eu achei tambem que tinha algo errado cara, cheguei ate colocar breackpoint em todas linhas de dados, na hora de salvar para ver os dados que ele passava na minha netidade, porem ele sempre passa os dados que ja trouxe do banco, e estou alterando sim claro, ja cheguei a alterar ate um cadastro inteiro mas nada aconteceu ele nao da erro porem quando clico em salvar ele so faz o reload da pagina e volta com os dados antigos.

To trabalhando nisso ainda se achar o erro posto aqui

Hellllp.
Responder

11/09/2014

Joel Rodrigues

Então, amigo, eu já havia pedido pra você verificar as propriedades da entidade. Só que agora eu pedi para você verificar o texto dos TextBoxes, não sua entidade. Ou seja, após você alterar o texto, ele está permanecendo alterado, ou por algum motivo está retornando ao valor inicial?
Responder

11/09/2014

Celiol.

Noa Joel ele vem com o valor anterior o que eu alterei ele nao pega, cara.
Responder

11/09/2014

Joel Rodrigues

Por favor, me mande o código COMPLETO da sua página. Você pode colar no PasteBin, ou fazer upload do arquivo em algum lugar e mandar o link.
Responder

11/09/2014

Celiol.

Como assim Joel voce esta falando pra eu fazer upload dele todo mas é um pequeno metodo apenas desse botao editar, posso te mandar um arquivo txt ai voce cola ai no not ++?
Responder

11/09/2014

Celiol.

Olha Joel sei que ja coloquei aqui mas vou colocar entao novamente bem estruturado apenas o codigo para editar o cadatro do cliente que esta dando esse prolema, qualquer coisa te mando o codigo da pagina toda.

protected void Page_Load(object sender, EventArgs e)
        {
            pnldadosCLi.Visible = false;
            btnSave.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;
             txtEndCli.ReadOnly = true;
             txtMailCli.ReadOnly = true;
             txtFoneCli.ReadOnly = true;
              
            }    
        }

Olha joel essa primeira parte do codigo ele passa os dados da entidade (cliente) para os textbox e ja os desabilita, tudo certo.

   protected void btnEditaCli_Click(object sender, EventArgs e)
        {
            btnEditaCli.Visible = false;
            btnSave.Visible = true;

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

Ja este outro metodo somente habilida os textbos quando o cara clicar em editar, e deixa o botao salvar visivel.

   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);
            //Context.Entry(cliente).State = EntityState.Modified;
            //clientes.SaveChanges();
            
            cliente = null;
            clientes = null;

            btnEditaCli.Visible = true;
        }

E por fim o evento do botal salvar alterações que ele deve salver os novos dados, porem como te disse ele nao esta pegando os dados novos digitados e sempre pega os mesmo que trouxe do banco.

Ve se da pra entender melhor agora.
Responder

15/09/2014

Joel Rodrigues

Altere o método Page_Load, adicionando uma verificação de PostBack, da seguinte forma:
protected void Page_Load(object sender, EventArgs e)
{
    if(!IsPostBack)
    {
        pnldadosCLi.Visible = false;
        btnSave.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;
         txtEndCli.ReadOnly = true;
         txtMailCli.ReadOnly = true;
         txtFoneCli.ReadOnly = true;       
        }    
    }
}
Responder

15/09/2014

Celiol.

Joel realizei o teste que voce falou ai acima pra mas ai um problema dessa maneira ele nao carregou os textbox com os dados do cliente quando eu clico em meus dados, ele vem com os campos em branco, apos eu clicar no editar ele habilita os campos e carrega os dados, mas tentei editar um campo e continua do mesmo jeito ele nao salva o novo dado.

Grato, Miller.
Responder

Que tal ter acesso a um e-book gratuito que vai te ajudar muito nesse momento decisivo?

Ver ebook

Recomendado pra quem ainda não iniciou o estudos.

Eu quero
Ver ebook

Recomendado para quem está passando por dificuldades nessa etapa inicial

Eu quero

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

Aceitar