Ver Mensaje Individual
  #5 (permalink)  
Antiguo 14/10/2008, 09:37
Sil_va
 
Fecha de Ingreso: diciembre-2007
Mensajes: 100
Antigüedad: 17 años, 1 mes
Puntos: 0
Respuesta: Problema con las Cookies

Hola de nuevo,

A continuación te muestro el código que tengo en el Page_Load del formulario que me está dando problemas

Código:
    Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        If Not Page.IsPostBack Then
            cargarDatosProyecto()
        End If
    End Sub


    Private Sub cargarDatosProyecto()
        Dim codProy As String = ""
        Dim coger_MC_Proyecto As HttpCookie = Request.Cookies.Get("GestProy_Proyecto")
        ' Leer valores de una Cookie múltiple
        If Session("crearProyecto") = False Then
            ' Si existe el nombre ya estaba creado
            Me.txtNombre.Text = coger_MC_Proyecto.Values.Get(1)
            Me.txtDescripcion.Text = coger_MC_Proyecto.Values.Get(2)
            Me.txtPlanInicial.Text = coger_MC_Proyecto.Values.Get(3)
            Me.txtPlanActualizada.Text = coger_MC_Proyecto.Values.Get(4)
            Me.txtFecha_inicio.Text = coger_MC_Proyecto.Values.Get(5)
            Me.txtFecha_final.Text = coger_MC_Proyecto.Values.Get(6)
            Me.txtResponsable.Text = coger_MC_Proyecto.Values.Get(8)
            Me.txtCoordinador.Text = coger_MC_Proyecto.Values.Get(10)
            Me.txtCliente.Text = coger_MC_Proyecto.Values.Get(12)

        Else
            ' Si no está el nombre definido es que se está creando el proyecto
            'Crear código para el proyecto
            codProy = Consultas_PorCodigo.crearCodProyecto(Session("tipo_proyecto"), Session("año"))
            Session("crearProyecto") = False

            If Not codProy.Equals("") Then
                Consultas_PorCodigo.meterProyEnCookie(codProy)
            End If

            ' Redirigimos a esta misma página para que entre cargando el proyectio
            Response.Redirect("DetallesProyecto.aspx")
        End If
    End Sub
La primera vez que cargo la página entra por el ELSE para crear un nuevo proyecto y lo guarda en la Cookie. Despues redirijo la misma página. Ahora entra por el IF y lee correctamente de la cookie los valores que habia inicializado la primera vez y los muestra en el formulario.


Una vez mostrados los valores, el usuario puede cambiar algunas cosas y pulsar el botón guardar, que tiene el siguiente código (hasta aquí todo habia ido correctamente)

Código:
Protected Sub btnGuardar_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnGuardar.Click
        Dim coger_MC_Proyecto As HttpCookie = Request.Cookies.Get("GestProy_Proyecto")

        Dim proyecto As New Proyecto()

        proyecto.codigo = coger_MC_Proyecto.Values.Get(0)
        proyecto.nombre = Me.txtNombre.Text
        proyecto.descripcion = Me.txtDescripcion.Text
        proyecto.plan_inicial = Me.txtPlanInicial.Text
        proyecto.plan_actual = Me.txtPlanActualizada.Text
        proyecto.fecha_inicio = Me.txtFecha_inicio.Text
        proyecto.fecha_final = Me.txtFecha_final.Text
        proyecto.responsable = coger_MC_Proyecto.Values.Get(7)
        proyecto.coordinador = coger_MC_Proyecto.Values.Get(9)
        proyecto.cliente = coger_MC_Proyecto.Values.Get(11)

       ' Cambio en la BD 
       Control_Detalles.guardarCambiosDetProy(proyecto)
     
    End Sub
Tras ejecutar debugueando: Dim coger_MC_Proyecto As HttpCookie = Request.Cookies.Get("GestProy_Proyecto") compruebo el valor de la cookie y está vaciía, por lo que el objeto "proyecto" se me inicializa incorrectamente.

Desde el principio traté de reducir un poco los post para hacerlo más legible. Esto es todo el código.

Muchas gracias por tu tiempo.