1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

PostBack e inicializaçoes de classes

Discussão em 'Web Development' iniciada por Galbne_PT, 17 de Abril de 2007. (Respostas: 4; Visualizações: 1344)

  1. Galbne_PT

    Galbne_PT Power Member

    Boas ppl,

    Vou expor um problema que até um noob descobria, mas eu estou à nora com isto.
    Estou a começar a desenvolver uma pequena aplicação de em asp.net para gerir clientes. O que se passa é tenho programado mt em windows forms e em c# e informaram que o asp.net 2.0 em c# é mt parecido e até se aproveita as classes, eu contente com essa informação, vamos a por ao trabalha. mas agora deixando de palavriado e passar ao problema.

    Tenho um classe Clients e "gera" o cliente, no evento de iniciar o pagina Default.aspx tenho
    Código:
     private Clients clients;
    
    protect void page..()
    {
    if (!page.ispostback) clientes = new clients();
    
    label.text = clients.dateofbirth
    }
    Tenho nas informações a data de nascimento do cliente, ora o que eu quero fazer é alterar essa data de nascimento, mas qd eu carrego no botao de alterar ele faz o processo td mas ao iniciar a pagina ele dá erro a dizer que clients nao foi inicializada.
    Há alguma maneira de manter a class inicializada após um postback? Têm alguma sugestão para este problema?

    Cumps
     
  2. SoundSurfer

    SoundSurfer Power Member

    "Há alguma maneira de manter a class inicializada após um postback?"

    Há, guardando na Sessão, mas não é suposto ser usado para casos destes, se bem percebi o problema.

    Apesar da linguagem ser a mesma, o Windows.Forms é bastante diferente do ASP.NET, principalmente na forma de pensar e de abordar os vários problemas.
    Tens de pensar que o HTTP de base não guarda nenhum contexto entre pedidos, logo, cada página tem quase sempre de inicializar as suas variáveis quando é chamada.

    Expõe melhor o teu problema.

    Deves começar por perceber o "Page Life Cycle" do ASP.NET, por exemplo aqui.
     
    Última edição: 17 de Abril de 2007
  3. Galbne_PT

    Galbne_PT Power Member

    Boas, Obrigado SoundSurfer,

    Pois já quem me informou tb não sabe mt do assunto ta visto, mas pronto... mas agora tenho de fazer :(.
    O que eu pensava que se podia fazer era manter a classe inicializada, alterar valores na classe e só depois por exemplo enviar os dados da classe para a base de dados, mesmo fazendo o postback, pelo k vi do url k mandaste não dá :P

    A solução que arrangei é mesmo usar a classe iniciada e por em Session.

    O problema é : tenho um campo da data, qd carrego no botao mostra o calendario, cada vez que carrego no calendario ele faz o postback, entretanto tenho o event de cada click no calendario atribui a data seleccionada na classe, mas a data não aparece! só aparece se fizer outro postback. isso com a inicializacao da classe em Session.

    Agora há alternativas? ou tenho de pensar de outra maneira? Conhecem alguns tutorials com esse tipos de exemplos.

    Cumps
     
  4. SoundSurfer

    SoundSurfer Power Member

    Uma dica: tenta não pôr a classe no Session. Experimenta por exemplo guardar valores entre request com campos escondidos... por exemplo asp:HiddenField ... o valor dos campos é automaticamente inicializado pelo asp.net quando fazes o PostBack, tens é de ver em que faze do ciclo de vida é que ele faz isso.

    Outra alternativa é guardar os dados no ViewState... isto tudo porque a Session é partilhada pelas várias janelas do browser...
     
  5. Galbne_PT

    Galbne_PT Power Member

    Optei entao por pôr no ViewState e utilizo o AJAX para tirar o "efeito de Reload" do postback...

    Parece que fica bem...

    Obrigado
     

Partilhar esta Página