none
Ejemplo uso JQGrid (free) Maestro / Detalle ( 2 grillas)

    Pregunta

  • Estimados Sres.

    Alguien que me pueda ayudar con el uso de JQGrid, para poder generar 2 grillas , un Maestra y otra Detalle.

    se que existe ejemplos en su página oficial http://www.trirand.com/blog/jqgrid/jqgrid.html pero los ejemplos en en PHP, y eh visto otros en algunos blog, pero donde la paginacion y ordenamiento lo parametrizan en el procedimiento almacenado, cosa que no lo veo como buena práctica y lo peor que realizan subconsultas. eso sería permitido en algun proyecto ligero, pero en uno complejo no creo que sea aceptable.

    como estos ejemplos: http://geekswithblogs.net/jaullo/archive/2011/08/03/jqgrid-y-asp.net-maestro-detalle-con-subgrid-parte-2.aspx

    http://www.variablenotfound.com/2009/10/jqgrid-grids-espectaculares-para-aspnet.html

     

    Alguien que halle trabajo con JQGrid con amplia experiencia. Espero su ayuda, muchas gracias de antemano.

     


    Saludos cordiales, Anthony A. Vidal Contreras Analista Programador de Sistemas
    viernes, 28 de octubre de 2011 16:22

Respuestas

  • Revisa estos dos temas del jqGrid:

     

    - Load array data at once

    - Load at once from server

    Puedes ver una idea de cómo se comportan en esta página:

    http://www.trirand.com/blog/jqgrid/jqgrid.html

     

     

    Prueba con un ejemplo simple para comprender como funciona, define un método que regresa una lista de entidad, se recibirá como array de objetos en el cliente, pasalo como  origen de datos al jqgrid y cargara los registros, el ordenamiento y paginado no harán visita al servidor.

    Para el caso de un subgrid, sencillo, solo agrega a una propidad a la entidad que tenga otra lista de entidades. Del lado cliente, defines un código q apartir del registro seleccionado, obtenga del arreglo local los subelementos. Espero no haberte enrredado, avisame y lo vemos a detalle.

    Saludos!!!

    viernes, 28 de octubre de 2011 21:39

Todas las respuestas

  • No tengo experiencia en JQGrid, pero sí es muy aceptable y muy apropiado incluir la paginación en el procedimiento almacenado, especialmente en proyectos grandes que manejen mucha información.  Cuando se incluye la paginación, no queda más que incluir también el ordenamiento, o de otra forma la paginación no funcionaría.
    Jose R. MCP
    viernes, 28 de octubre de 2011 16:57
    Moderador
  • WebJOse, No comparto tu idea. este procedure.. crees tu que no cosumirá recursos???

    imaginandote 4 o 5 tablas relacionadas 2 de ellas transaccionales???

    este procedure tiene SUBCONSULTA y encima solo tiene los parametros para un listado total, considerando que para consulta, uno siempre tiene que aplicar varios filtros de busqueda respecto al negocio.

     

     

    ALTER procedure [dbo].[GetPersons]
     
    @PageSize int ,
    @CurrentPage int ,
    @SortColumn varchar(20),
    @SortOrder varchar(4)
     
    as
     
    declare @RecordCount int
    declare @PageCount int
    declare @PageIndex int
     
    Select @RecordCount = count(ID)
    from Person
     
    set @PageCount = Ceiling(cast (@RecordCount as float) / cast (@PageSize as float))
     
    if (@CurrentPage > @PageCount) set @CurrentPage = @PageCount
     
    set @PageIndex = @CurrentPage - 1
     
    Select RecordCount = @RecordCount, PageCount = @PageCount, CurrentPage = @CurrentPage
     
    declare @Query varchar(300)
     
    set @Query =
          'Select ID, Name, LastName, BirthDate, Weight,
           RowNumber = ROW_NUMBER() OVER (ORDER BY ' + @SortColumn + ' ' + @SortOrder + ')
           from Person'
     
    set @Query =
          'Select ID, Name, LastName, BirthDate, Weight
           from (' + @Query + ' )as result
           where RowNumber BETWEEN ' + cast(@PageSize * @PageIndex + 1 as varchar(10)) + '
                        AND ' + cast(@PageSize * (@PageIndex + 1) as varchar(10))
     
    Exec (@Query)
    
    

    PD: sigo esperando respuesta de alguien con experiencia y que tuviera un ejemplo práctico. GRACIAS de antemano.

     


    Saludos cordiales, Firma firma = new Firma { Name:"Anthony A. Vidal Contreras", Profile:"Analista Programador de Sistemas" };
    viernes, 28 de octubre de 2011 17:42
  • Yo nunca dije que no consumiera recursos.  Lo que dije es que sí es apropiado, aunque tal vez no fui muy claro en el por qué:  Porque se ahorra ancho de banda.  Es muy común usar paginación cuando la información simplemente es muy extensa para transmitirla toda, especialmente en un ambiente multiusuario donde la consulta se repite potencialmente varias veces por segundo.  Si usted no tiene problemas de ancho de banda, pues tal vez no necesite paginación.

    En cuanto a la eficiencia, simplemente debe observarse el plan de ejecución y revisar si la consulta se ve afectada por el ordenamiento, y determinar si es posible optimizar, lo cual es relativamente sencillo.  Por ejemplo, una tabla de empleados suele estar indizada por ID (la clave primaria) y por apellido.  Entonces una consulta paginada por apellido será sumamente eficiente, casi tan eficiente como buscar por ID.

    Lo de 4 o 5 tablas no es mucho más relevante (o agraviante, mejor dicho).  Por ejemplo:  Yo tengo un SQL Server que conecta a otro remotamente via un linked server object.  En este SQL remoto tengo 1 view que filtra registros "repetidos", luego otro view que une estos registros con otros de otra tabla y agrega columnas adicionales indicando la procedencia, luego otro view que une este nuevo view con otra tabla, y finalmente eso se transmite al otro servidor.  En el servidor que recibe, tengo otro view que une este view con 3 tablas para obtener un view maestro de la información que se considera "base" para el proyecto.  Este view lista en 3 segundos con los ordenamientos más comunes.


    Jose R. MCP
    viernes, 28 de octubre de 2011 18:30
    Moderador
  • Revisa estos dos temas del jqGrid:

     

    - Load array data at once

    - Load at once from server

    Puedes ver una idea de cómo se comportan en esta página:

    http://www.trirand.com/blog/jqgrid/jqgrid.html

     

     

    Prueba con un ejemplo simple para comprender como funciona, define un método que regresa una lista de entidad, se recibirá como array de objetos en el cliente, pasalo como  origen de datos al jqgrid y cargara los registros, el ordenamiento y paginado no harán visita al servidor.

    Para el caso de un subgrid, sencillo, solo agrega a una propidad a la entidad que tenga otra lista de entidades. Del lado cliente, defines un código q apartir del registro seleccionado, obtenga del arreglo local los subelementos. Espero no haberte enrredado, avisame y lo vemos a detalle.

    Saludos!!!

    viernes, 28 de octubre de 2011 21:39