2016-11-17 14 views
0

コントローラコードに動作していない動的カラム:jqGridのV4 -

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

ビューコード:私は[ 'actname']としてコルンを取得

$(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" 
       } 
      }) 
     } 
    }); 
}); 

をコルム[として{名: 'actionTaken'} ]。上記のスクリプトを実行すると、このエラーが発生します。length of colNames <> colModel!

+0

'var jsonData = new {colNames = new [] {" actname "}、colModel = new [] {new {name =" actionTaken "}}};'どのようにしても 'jsonData.colNames'と'jsonData.colModel'は文字列ではなく**配列**でなければなりません。 jqGridは両方の配列が同じ数の要素を持っていることを確認しますが、文字列として 'colNames'と' colModel'を使い、テスト 'if(p.colNames.length!== p.colModel.length){'はあなたの場合の弦。これは、間違ったエラーメッセージの原因です。 – Oleg

+0

ありがとう、オレグ。私は上記のように私のjasonDataを変更し、それは働いた! – priya

+0

あなたは大歓迎です!私は答えと同じ情報を投稿しました。 – Oleg

答えて

0

は配列ではなく文字列でなければなりません

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

jsonData.colModelのようなものを試してみてください。 jqGridは両方の配列の要素数が同じであることを確認しますが、colNamescolModelを文字列として使用し、テストif (p.colNames.length !== p.colModel.length) {はケースの文字列の長さを比較します。これは、間違ったエラーメッセージの原因です。