Jump to content

Recommended Posts

Posted

Boas pessoal,   😄

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

Posted

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

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 😄 Qualquer duvida chuta 😄

Daniel Amorim

VP for xRTML

http://www.xrtml.org http://www.realtime.co

Posted

Obrigado pela ajuda  😄

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

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

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.