none
Carro de compras RRS feed

  • Pregunta

  • Hola.

    Quiero hacer una especie de carrito de compras, pero no de la manera convencional. Quiero tener dos cuadriculas, una con el listado de productos a escoger y con un combo que filtra las categorías.

    El comportamiento seria, que cuando escoja un producto de la primera cuadricula, aparezca en la segunda. Desde la segunda se pueda quitar y editar la cantidad que se pide.

    Como lo hago sin que el postback posiblemente me limpie el grid de productos elejidos? No he probado nada aun.

    Estoy pensando en: cuando el usuario seleccione de la primera cuadricula un producto, este se grabe a la tabla de ordenitem y se presente en la cuadricula secundaria mediante una consulta. Pero todo esto seria con llamadas al servidor, entonces, pienso que el postback me halaría las pelotas ahí.

    Gracias por su tiempo.

    miércoles, 24 de junio de 2015 2:57

Respuestas

  • No, el postback no debería perder nada si está bien hecho. Suponiendo que tengas controlado el "if not page.IsPostback" en el Page_Load para que no machaque nada, el estado de todos los controles debería preservarse gracias al ViewSate, incluso aunque no hicieses lo que mencionas acerca de irlo salvando todo en base de datos.

    Y si vas salvando todos los datos, con más motivo deberían conservarse, siempre que lo hagas con cuidado: recuerda que el page_load se ejecuta ANTES que el click del botón que hace el postback, por lo tanto si recuperas los datos de la cuadrícula secundaria en el Page_Load y la grabas en el Click del botón, no funcionará; tienes que tener cuidado con el orden de los eventos.

    miércoles, 24 de junio de 2015 3:44
  • hola

    >>Como lo hago sin que el postback posiblemente me limpie el grid de productos elejidos?

    pero porque sucederia esto que planteas ?

    podrias crear una lista o datatable de productos seleccionados que mantengas en el objeto Session y vincules al segundo grid

     ¿Como agregar renglon a gridview desde un boton?

     agregar renglones a un gridview

    como veras puedes ir manteniendo la seleccion en memoria usando el objeto Session, entonces agregas y eliminas de la lista o datatable hasta que confirmes

    pero las operaciones las realizas sobre el contenido de la Session

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    miércoles, 24 de junio de 2015 4:15

Todas las respuestas

  • No, el postback no debería perder nada si está bien hecho. Suponiendo que tengas controlado el "if not page.IsPostback" en el Page_Load para que no machaque nada, el estado de todos los controles debería preservarse gracias al ViewSate, incluso aunque no hicieses lo que mencionas acerca de irlo salvando todo en base de datos.

    Y si vas salvando todos los datos, con más motivo deberían conservarse, siempre que lo hagas con cuidado: recuerda que el page_load se ejecuta ANTES que el click del botón que hace el postback, por lo tanto si recuperas los datos de la cuadrícula secundaria en el Page_Load y la grabas en el Click del botón, no funcionará; tienes que tener cuidado con el orden de los eventos.

    miércoles, 24 de junio de 2015 3:44
  • hola

    >>Como lo hago sin que el postback posiblemente me limpie el grid de productos elejidos?

    pero porque sucederia esto que planteas ?

    podrias crear una lista o datatable de productos seleccionados que mantengas en el objeto Session y vincules al segundo grid

     ¿Como agregar renglon a gridview desde un boton?

     agregar renglones a un gridview

    como veras puedes ir manteniendo la seleccion en memoria usando el objeto Session, entonces agregas y eliminas de la lista o datatable hasta que confirmes

    pero las operaciones las realizas sobre el contenido de la Session

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    miércoles, 24 de junio de 2015 4:15
  • Gracias Alberto.

    Me has dando tremenda explicación del procedimiento. Estaba totalmente ciego en el caso.

    Un saludo.

    miércoles, 24 de junio de 2015 12:51
  • Gracias Leandro.

    Magnifico ejemplo, me servirá de mucho ya lo veo.

    Un saludo.

    miércoles, 24 de junio de 2015 12:52