JqGrid n’affichant pas de données MVC

s’il vous plaît vérifier le jqgrid que j’ai, il affiche simplement la grid vide, mon json est selon le format attendu de la grid. J’utilise jqGrid 4.4.4

 $(function () { $("#myGrid").jqGrid({ url: '/Home/GetData/', datatype: "json", contentType: "application/json; charset-utf-8", mtype: 'GET', colNames: ['CP', 'Val1', 'Val2', 'Val3'], colModel: [ { name: 'CP', index: 'CP', width: 150 }, { name: 'Val1', index: 'Val1', width: 150 }, { name: 'Val2', index: 'Val2', width: 150 }, { name: 'Val3', index: 'Val3', width: 150 } ], rowNum: 5, rowList: [5, 10, 15], pager: '#pager', sortname: 'CP', viewrecords: true, sortorder: "asc", viewrecords: true, caption: "JSON Example" }); $("#myGrid").jqGrid('navGrid', '#pager', { edit: true, add: true, del: true }); });  

Ma méthode de contrôleur ressemble à ceci: je formate les données conformément à la documentation jqGrid.

  [HttpGet] public JsonResult GetData() { List myList = CallProcedure("getVal").ToList(); var jsonData = new { total = myList .Count, page = 1, records = 10, rows = ( from d in myList select new { id = d.CP, cell = new ssortingng[] { d.CP.ToSsortingng(), d.Val1.ToSsortingng(), d.Val2.ToSsortingng(), d.Val3.ToSsortingng() } }).ToArray() }; return Json(jsonData, JsonRequestBehavior.AllowGet); } 

J’ai essayé de mettre jsonReader dans la grid mais toujours sans succès. Pouvez-vous s’il vous plaît indiquer où je me trompe ici? Merci d’avance

Json ressemble à ci-dessous

  { "total": 1, "page": 1, "records": 25, "rows": [{ "id": "AUSD", "cell": ["AUSD ", "0.000000", "0.72315000", "0.000000"] }, { "id": "PPFF", "cell": ["PPFF ", "0.000000", "1.10288000", "0.000000"] }, { "id": "XTYU", "cell": ["XTYU ", "0.000000", "1.41479000", "0.000000"] }, { "id": "NUSD", "cell": ["NUSD ", "-0.000020", "0.67097000", "-0.000020"] }, { "id": "USED", "cell": ["USED ", "0.000000", "3.67278000", "0.000000"] }, { "id": "UAD", "cell": ["UAD ", "0.000120", "1.37037000", "0.000020"] }] } 

New Json ressemble,

 { "total": 1, "page": 1, "records": 25, "rows": [ ["Val1 ", "0.000000", "0.72315000", "0.000000"], ["Val12 ", "0.000000", "1.10288000", "0.000000"], ["Val13 ", "0.000000", "1.41479000", "0.000000"], ["Val14 ", "-0.000020", "0.67097000", "-0.000020"], ["Val15 ", "0.000000", "3.67278000", "0.000000"], ["Val16 ", "0.000120", "1.37037000", "0.000020"], ["Val17 ", "0.000000", "0.99843000", "0.000000"], ["Val18 ", "0.000000", "24.53100000", "0.000000"], ["Val19 ", "0.000000", "6.76500000", "0.000000"], ["Val23 ", "0.000000", "7.77250000", "0.000000"] ] } 

La grid est toujours vide 🙁

Mise à jour de la méthode d’action pour retourner JSON dans un format différent,

 { "total": 25, "page": 1, "records": 10, "rows": [{ "CP": "ADRR", "Val1": "0.000000", "Val2": "0.72315000", "Val3": "0.000000" }, { "CP": "TRRT", "Val1": "0.000000", "Val2": "1.10288000", "Val3": "0.000000" }, { "CP": "TRER", "Val1": "0.000000", "Val2": "1.41479000", "Val3": "0.000000" }] } 

La différence dans le JSON est qu’il contient “pour” CP “,” Val1 “noms. Et la grid est encore vide

Quel est le problème ici? Le point d’arrêt vient ici quand la page se charge, il retourne le json comme prévu,

  public JsonResult GetData() { List dd = CallProc("getLiveData").ToList(); var jsonData = new { total = 1, page = 1, records = dd.Count, rows = ( from d in dd select new ssortingng[] { CP = d.CP.ToSsortingng(), CP1 = d.CP1.ToSsortingng(), CP2 = d.CP2.ToSsortingng(), Cp3 = d.Cp3.ToSsortingng() }).ToArray() }; ssortingng json = new JavaScriptSerializer().Serialize(jsonData); //just to check what json I am getting return Json(jsonData, JsonRequestBehavior.AllowGet); } 

Ce que je suggère dans mon commentaire est que:

  { "total": 1, "page": 1, "records": 25, "rows": [["AUSD ", "0.000000", "0.72315000", "0.000000"], ["2", "PPFF ", "0.000000", "1.10288000", "0.000000"], ["XTYU ", "0.000000", "1.41479000", "0.000000"] 

]}

J’ai déjà des problèmes avec plusieurs grids concernant les résultats JSON et cela les a résolus.

JqGrid n’accepte pas de json dans les lignes, il a besoin de json formaté en paires nom-valeurs qui correspondent au champ de nom dans le modèle de colonne.

Ici JsFiddle Sample

 { "total": 1, "page": 1, "records": 25, "rows": [ {CP: "Val1 ", Val1: "0.000000", Val2:"0.72315000", Val3: "0.000000"}, {CP: "Val12 ",Val1: "0.000000", Val2: "1.10288000",Val3: "0.000000"}, ..... ] } 

Pour obtenir ce json, vous devez mettre à jour votre méthode d’action comme suit

  public JsonResult GetData() { List myList = CallProcedure("getVal").ToList(); var jsonData = new { total = myList .Count, page = 1, records = 10, rows = ( from d in myList select new { id = d.CP, CP = d.CP.ToSsortingng(), Val1= d.Val1.ToSsortingng(), Val2 = d.Val2.ToSsortingng(), Val3= d.Val3.ToSsortingng() }).ToArray() }; return Json(jsonData, JsonRequestBehavior.AllowGet); } 

Avez-vous inspecté le résultat du serveur dans le débogueur? Existe-t-il une émission de problème dans la console?

Sinon, essayez peut-être de supprimer “ToArray ()” dans le bloc jsonData.

  var jsonData = new { total = myList .Count, page = 1, records = 10, rows = ( from d in myList select new { id = d.CP, cell = new ssortingng[] { d.CP.ToSsortingng(), d.Val1.ToSsortingng(), d.Val2.ToSsortingng(), d.Val3.ToSsortingng() } }) };