2016-11-17 5 views
0

Controller-Code:jqGrid v4 - dynamische Spalte nicht funktioniert

public JsonResult GetGridColumn() 
{ 
    var jsonData = new 
    { 
     colNames = "['actname']", 
     colModel = "[{ name: 'actionTaken'}]", 
     }; 
     return Json(jsonData, JsonRequestBehavior.AllowGet); 
    } 
    } 

Code anzeigen:

$(document).ready(function() { 
    $.ajax({ 
     type: "POST", 
     url: "/GetForm/GetGridColumn", 
     data: "", 
     datatype: "json", 
     success: function (data) { 
      colN = data.colNames; 
      colM = data.colModel; 
      $("#taskGrid").jqGrid({ 
       url: "someurl", 
       datatype: 'jsonstring', 
       mtype: 'POST', 
       colNames: colN, 
       colModel: colM, 
       pager: jQuery('#pager'), 
       rowNum: 10, 
       rowList: [10, 20, 30, 40], 
       height: '100%', 
       viewrecords: true, 
       width: 1250, 
       jsonReader: { 
        cell: "", 
        id: "0" 
       } 
      }) 
     } 
    }); 
}); 

I coln als [ 'actname'] und Colm erhalten, wie [{name: 'actionTaken'} ]. Wenn ich das obige Skript ausführe, bekomme ich diesen Fehler Länge der colNames <> colModel!

+0

versuche etwas wie 'var jsonData = neu {colNames = neu [] {" aktname "}, colModel = neu [] {neu {name =" actionTaken "}}};' In jedem Fall 'jsonData.colNames' und 'jsonData.colModel' sollte ** Arrays ** und keine Zeichenfolgen sein. jqGrid überprüft, dass beide Arrays die gleiche Anzahl von Elementen haben, aber Sie verwenden 'colNames' und' colModel' als Strings und den Test 'if (p.colNames.length! == p.colModel.length) {' vergleicht die Länge von die Saiten in deinem Fall. Es ist der Grund für eine missverständliche Fehlermeldung. – Oleg

+0

Vielen Dank Oleg. Ich habe meine jasonData wie oben beschrieben geändert und es hat funktioniert !! – priya

+0

Gern geschehen! Ich habe die gleichen Informationen wie die Antwort gepostet. – Oleg

Antwort

0

versuchen so etwas wie

var jsonData = new { 
     colNames = new [] {"actname"}, 
     colModel = new [] { new { name = "actionTaken" } } 
    }; 

In irgendeiner Weise jsonData.colNames und jsonData.colModel sollten Arrays und nicht Strings sein. jqGrid überprüft, dass beide Arrays die gleiche Anzahl an Elementen haben, aber Sie verwenden colNames und colModel als Strings und der Test if (p.colNames.length !== p.colModel.length) { vergleicht die Länge der Strings in Ihrem Fall. Es ist der Grund für eine missverständliche Fehlermeldung.