none
jqGrid no carga datos RRS feed

  • Pregunta

  • Hola a todos, quiero trabajar jqGrid pero tengo el problema que no me carga los datos, he tomado el ejemplo desde la Web oficial que es este link http://www.guriddo.net/demo/guriddojs/ y tomo como ejemplo "Load from JSON" lo he definido tal cual:

    $(document).ready(function () {

     

                $("#jqGrid").jqGrid({

                    url: 'jqGrid03.aspx/GetProducts',

                    datatype: "json",

                    colModel: [

                       { label: 'Category Name', name: 'CategoryName', width: 75 },

                       { label: 'Product Name', name: 'ProductName', width: 90 },

                       { label: 'Country', name: 'Country', width: 100 },

                       { label: 'Price', name: 'Price', width: 80 },

                       { label: 'Quantity', name: 'Quantity', width: 80 }

                    ],

                    viewrecords: true,

                    width: 780,

                    height: 200,

                    rowNum: 30,

                    loadonce: true,

                    pager: "#jqGridPager"

                });

            });

    Y este es mi WebMethod, para efectos de prueba los datos no son cargados desde la base de datos.

                  [WebMethod]

            [ScriptMethod(ResponseFormat = ResponseFormat.Json)]

            public static string GetProducts()

            {

                Products[] prod = new Products[] { 

                    new Products() 

                    { 

                        CategoryName = "Beverages", 

                        ProductName = "Steeleye Stout", 

                        Country = "UK",

                        Price = "1008.0000",

                        Quantity = "65"

                    }, 

                    new Products() 

                    { 

                        CategoryName = "Beverages", 

                        ProductName = "Laughing Lumberjack Lager", 

                        Country = "USA",

                        Price = "140.0000",

                        Quantity = "10"

                    } 

                };

                return new JavaScriptSerializer().Serialize(prod);

            }

    Se los agradecería a quien pueda indicarme dónde está el error

    Gracias

    viernes, 26 de febrero de 2016 2:51

Respuestas

  • hola

    no funciona con esa estructura de datos

    en este ejemplo

    jqGrid – Listar Orden Compra (Maestro-Detalle)

    analzia como defino el webmethod para crear la estructura que jqgrid conoce como interpretar

    en los ejemplos use ajax para invocar los webmethod, pero podrias untentar definiendo la url directa en el jqgrid, lo importante es la estructuraque envias serializada a json

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    viernes, 26 de febrero de 2016 5:15
  • hola

    Pero el ejemplo que ellos indican si es este json que estas mostrando tiene una propiedad "rows" donde definen la lista de items que se msotrara en el grid

    En el codigo .net donde defines la lista de Products no estas serualizando esa misma estructura, no veo que definas ese "rows" en la entidad para que se serialice de esa forma

    Puede usar el developer tools del browser, al cual accedes con F12, en al solapa Network podrias capturar las llamadas al servidor y analizar cual es el json que responde el servicio y asi validar si respectas la estructura que el jqgrid necesita

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    viernes, 26 de febrero de 2016 11:03

Todas las respuestas

  • hola

    no funciona con esa estructura de datos

    en este ejemplo

    jqGrid – Listar Orden Compra (Maestro-Detalle)

    analzia como defino el webmethod para crear la estructura que jqgrid conoce como interpretar

    en los ejemplos use ajax para invocar los webmethod, pero podrias untentar definiendo la url directa en el jqgrid, lo importante es la estructuraque envias serializada a json

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    viernes, 26 de febrero de 2016 5:15
  • Gracias Leandro por responder, yo me he guiado como veras de acuerdo al ejemplo que ponen y que además especifican la siguiente estructura de datos que debería devolverse para cargar la grilla, estoy haciéndolo idénticamente y lo compruebo que así sea, por eso me pregunto porque no funciona tal como ellos indican, en donde se encuentra el error, estoy usando la última versión 5.0.0.0 (Feb, 5th, 2016).

    Data.JSON

    {

       "rows":[

          {

             "CategoryName":"Beverages",

             "ProductName":"Steeleye Stout",

             "Country":"UK",

             "Price":"1008.0000",

             "Quantity":"65"

          },

          {

             "CategoryName":"Seafood",

             "ProductName":"Nord-Ost Matjeshering",

             "Country":"USA",

             "Price":"926.3700",

             "Quantity":"44"

          }

       ]

    }

     

    Voy a probar con el ejemplo que me indicas, gracias nuevamente.

     

    viernes, 26 de febrero de 2016 7:43
  • hola

    Pero el ejemplo que ellos indican si es este json que estas mostrando tiene una propiedad "rows" donde definen la lista de items que se msotrara en el grid

    En el codigo .net donde defines la lista de Products no estas serualizando esa misma estructura, no veo que definas ese "rows" en la entidad para que se serialice de esa forma

    Puede usar el developer tools del browser, al cual accedes con F12, en al solapa Network podrias capturar las llamadas al servidor y analizar cual es el json que responde el servicio y asi validar si respectas la estructura que el jqgrid necesita

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    viernes, 26 de febrero de 2016 11:03
  • Es verdad Alejandro, pero tampoco es eso, ya lo probé igual no funciona, de igual forma la estructura que tu pones en el ejemplo jqGrid – Listar Orden Compra (Maestro-Detalle) tampoco funciona si se trabaja el javascript como ellos indican, encontré una manera que si trabaja, es creando un “controlador genérico” con extensión “ashx”  que tiene esta estructura.

    public void ProcessRequest(HttpContext context)
    {
          System.Collections.Specialized.NameValueCollection forms = context.Request.Form;
          string strOperation = forms.Get("oper");

          if (strOperation == null)
          {
               var jsonSerializer = new JavaScriptSerializer();

                List<cuentasDcmtosOK> lista = new List<cuentasDcmtosOK>();
                lista.Add(new cuentasDcmtosOK() { NroCta = "12001", NomCta = "caja 1", FechaSal = Convert.ToDateTime("15/02/2016"), SalIniSol = 1540.20 });
                lista.Add(new cuentasDcmtosOK() { NroCta = "12002", NomCta = "caja 2", FechaSal = Convert.ToDateTime("28/02/2016"), SalIniSol = 33333.20 });
               lista.Add(new cuentasDcmtosOK() { NroCta = "14021", NomCta = "caja 3", FechaSal = Convert.ToDateTime("02/03/2016"), SalIniSol = 5890.20 });

                string archivoJP = new JavaScriptSerializer().Serialize(lista);
                context.Response.Write(archivoJP);
          }
          else if (strOperation == "del")
          {

          }
          else
          {

          }
    }

    De esta manera si funciona y más aun no se necesita pasar el tamaño de página ni calcular el total de registros todo es automático tal y como está en el ejemplo, ya lo probé también con una tabla de 1000 registros y todo bien, pagina, clasifica etc.

     

    Como digo de la otra manera, creando un [WebMethod] ya sea en el codebehind de la misma página o en un servicio Web no llega a ingresar el porqué, me gustaría saberlo, que falta o que está mal, si alguien lo sabe se lo agradecería indicar el porqué.

    Saludos

    viernes, 4 de marzo de 2016 23:02