Editar dados de Usuarios
22/07/2014
0
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.
Posts
02/09/2014
Celiol.
Help Joel.
02/09/2014
Joel Rodrigues
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.
09/09/2014
Celiol.
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..
09/09/2014
Joel Rodrigues
09/09/2014
Celiol.
10/09/2014
Celiol.
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.
10/09/2014
Joel Rodrigues
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.
10/09/2014
Celiol.
To trabalhando nisso ainda se achar o erro posto aqui
Hellllp.
11/09/2014
Joel Rodrigues
11/09/2014
Celiol.
11/09/2014
Joel Rodrigues
11/09/2014
Celiol.
11/09/2014
Celiol.
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.
15/09/2014
Joel Rodrigues
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; } } }
15/09/2014
Celiol.
Grato, Miller.
Clique aqui para fazer login e interagir na Comunidade :)