Foros del Web » Programación para mayores de 30 ;) » .NET »

Pageload caprichoso...

Estas en el tema de Pageload caprichoso... en el foro de .NET en Foros del Web. Hola a todos! A ver si me podeis ayudar, que me pasa algo que no entiendo... En el Sub Page_Load le digo qu traiga los ...
  #1 (permalink)  
Antiguo 05/11/2008, 11:40
 
Fecha de Ingreso: marzo-2008
Mensajes: 12
Antigüedad: 16 años, 1 mes
Puntos: 0
Pageload caprichoso...

Hola a todos!

A ver si me podeis ayudar, que me pasa algo que no entiendo...

En el Sub Page_Load le digo qu traiga los datos de una base de datos, para hacer una modificacion.

Al hacer el click en el Sub Button1_Click le digo que me actualice los cambios.

Todo funciona OK... pero por separado!!! Todo junto no hay manera que me lo haga...me explico

En el LOAD me carga los datos correctamente; si los reescribo y doy al Button1_Click, no me guarda los datos en la BD; en cambio, si comento el LOAD y le doy al clik, si que me lo guarda!!!

No se por que pasa esto... alguien me puede ayudar?!?

Saludos, Javier.-
  #2 (permalink)  
Antiguo 05/11/2008, 11:56
Avatar de atlante  
Fecha de Ingreso: julio-2002
Ubicación: Lima
Mensajes: 140
Antigüedad: 21 años, 9 meses
Puntos: 0
Respuesta: Pageload caprichoso...

Es un "problema" con el que se topan muchos programadores cuando se inician en el mundo de ASP.NET

Para empezar no es una falla del ASP.NET, es un problema con la secuencia de tu programa. Debes de recordar que el evento PAGE_LOAD se ejecuta cuando se "carga" la página, es por ello que en una operación de POSTBACK se ejecutará antes de que se ejecute el evento CLICK de tu botón, provocando que la información que tienen los controles vuelva a su estado original.

Para solucionar esto, el código que obtiene los datos debe de ejecutarse dentro de una clausula IF con una condicion que indique si se esta cargando la página por primera vez.

Código PHP:
if(!Page.IsPostback)
{
    
Codigo de acceso a datos

otra forma de hacerlo es añadir esto an inicio del evento:

Código PHP:
if(Page.IsPostback){ return; } 
Saludos.
__________________
If you look, If you really read between the lines, You will see...
  #3 (permalink)  
Antiguo 05/11/2008, 12:15
 
Fecha de Ingreso: marzo-2008
Mensajes: 12
Antigüedad: 16 años, 1 mes
Puntos: 0
Respuesta: Pageload caprichoso...

Gracias por la respuesta ATLANTE!!!

Pero no me lo soluciona....

hago lo del postback ante del acceso a datos del evento load y no me carga los datos desde la base de datos...

Que puedo hacer mal?!? Pego el codigo...

If Page.IsPostBack Then

'End If

Dim con As New SqlConnection()
con.ConnectionString = ConfigurationManager.ConnectionStrings("TRAERCURSO S2ConnectionString").ToString

Dim micomando As SqlCommand = con.CreateCommand()
micomando.CommandText = "SELECT * FROM cursos where idcurso=5" ' & Request.QueryString("idcurso")

con.Open()
Dim misdatos As SqlDataReader = micomando.ExecuteReader()
'Dim VAR As String
If misdatos.Read Then

TextBox1.Text = IIf(IsDBNull(misdatos(0)), "", misdatos(0))
TextBox2.Text = IIf(IsDBNull(misdatos(1)), "", misdatos(1))
TextBox5.Text = IIf(IsDBNull(misdatos(2)), "", misdatos(2))
FreeTextBox1.Text = IIf(IsDBNull(misdatos(4)), "", misdatos(4))

End If
misdatos.Close()
con.Close()

End If

End Sub


Haciendo lo que me dices, pues ya no me carga los datos de la BD (si comento el if page... entonces si....
  #4 (permalink)  
Antiguo 05/11/2008, 12:27
 
Fecha de Ingreso: marzo-2008
Mensajes: 12
Antigüedad: 16 años, 1 mes
Puntos: 0
Respuesta: Pageload caprichoso...

ATLANTE gracias por todo!!!!


Ya esta solucionado.... Al final era un:

Cita:
If Not Page.IsPostBack Then

end if

Graaaaacias!
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 05:10.