0

私は自分のサイトで jqgrid を使用しようとしています。私は vs 2013、asp.net mvc 5 を使用しており、nuget から jqgrid と jqgridmvc (jqgrid mvc ヘルパー) をインストールしています。jqgridmvc メーカー (xml をソースとして使用) の例に従いましたが、正常に動作します: http://mvcjqgrid.skaele.it/Home/TreeGrid

しかし、jsonをソースとして使おうとすると、なぜかうまくいきません。私の疑いは、どういうわけか私のjson形式が間違っていることですが、どこにあるのかわかりません:

コントローラーコード:

public JsonResult TreeGridData(GridSettings gridSettings)
  {
  var jsonData = new
    {
    total = 1,
    page = 1,
    records = 2,
    rows = new[]{
      new {id = 1, cell = new object[] {"1", "root 1", "0", null, false, false, true}},
      new {id = 11, cell = new object[] {"11", "child 11", "1", "1", true,false, true}}
      }
    };
 return Json(jsonData, JsonRequestBehavior.AllowGet);
 }

コードを表示:

@(Html.Grid("treeGrid")
.SetCaption("TreeGrid")
.AddColumn(new Column("ItemID")
  .SetLabel("Id").SetKey(true))
.AddColumn(new Column("Name")
  .SetAsExpandable())
.SetUrl(Url.Action("TreeGridData"))
.EnableTreeGrid()
 )

ありがとう!

編集:コメントの提案に従って、コントローラーから生成された応答を追加しました(www.localhost .../controller/treegriddata):

{
"total":1,
"page":1,
"records":2,
"rows":
[{"id":1,"cell":["1","root 1","0",null,false,false,true]},
 {"id":11,"cell":["11","child 11","1","1",true,false,true]}]
}
4

1 に答える 1

0

これは、使用したライブラリ (mvcjqgrid) が、Nuget からダウンロードした最新バージョンの jqgrid をサポートしていないことが原因であることがわかりました。生成されたグリッド コードは「treedatatype」ですが、新しい jqgrid の正しいコードは「datatype」です。したがって、 onBeforeRequest イベントで以下の関数を実行するだけで、すべてが機能します!

function DataTypeCorrection() {
    $("#tc-jqgrid").setGridParam({ datatype: 'json' });
}
于 2014-08-27T22:48:31.420 に答える