• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

zyle

[Resolvido] Não guarda as modificações feitas...

4 mensagens neste tópico

Boas pessoal,   :D

tenho um formulário na minha pagina que carrega os dados do cliente no page_load para os respectivos campos, para o cliente poder editar os seus dados...mas quando faxu o evento clique do botao com o respectivo codigo update..a pagina guarda os dados antigos!?? tipo faz o post back e carrega novamente os dados para as caixas de texto, e so depois faz o update =S

como posso resolver isto...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

"faxu" não sei o que é  :D

já leste a revista deste mês? lool

mas o código do update está no evento de click do botão não está? porque é que dizes que só faz update depois?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Só não entendi a parte de depois fazer o Update...  :D

No ciclo de vida de uma página ASP.Net tens os seguintes eventos serializados:

- PreInit

- Init

- InitComplete

- PreLoad

- Load

- <Control Events >

- LoadComplete

- PreRender

- SaveStateComplete

- Render

- Unload

Coloquei a negrito os que interessam para a conversa:

Load:

"The Page calls the OnLoad event method on the Page, then recursively does the same for each child control, which does the same for each of its child controls until the page and all controls are loaded.

Use the OnLoad event method to set properties in controls and establish database connections."

<Control Events >:

"Use these events to handle specific control events, such as a Button control's Click event or a TextBox control's TextChanged event."

Informação retirada do MSDN: http://msdn.microsoft.com/en-us/library/ms178472.aspx

Agora aplicando esta teoria ao teu casa. Quando fazes o pedido (GET) da página no evento Load é preenchido o formulário e a página é enviada para o cliente. Depois do cliente alterar o formulário e premir o botão é feito um novo pedido (POST) ao servidor de modo a actualizar os dados. Como os valores do elementos de formulário são enviados, no corpo do pedido, no servidor terás acesso a eles depois da página e seus controlos serem carregados. Mas como no evento de Load (invocado em todos os pedidos!) estás a preencher o formulário estragas os valores introduzidos pelo utilizador. Assim quando corre o evento de Click, na parte do Control Events, vais ler os valores entretanto alterados e não os que o utilizador preencheu.

Como se pode evitar isto? Não preenchendo o formulário quando o pedido é do tipo POST. Pode fazer qualquer coisa assim:

    protected void Page_Load(object sender, EventArgs e)
    {
        if(!Page.IsPostBack)
        {
              //Preencher o formulário!
        }
    }

Espero ter ajudado a corrigir o erro e acima de tudo a perceberes o porque deste estar a acontecer :D Qualquer duvida chuta :D

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Obrigado pela ajuda  :D

desculpem a minha explicação, não foi das melhores  :D

quando me referi a update era ao codigo update em sql (UPDATE SET..)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora