2011-08-18 5 views
1

私は、マルチセレクションモードでJqGridを使用しており、ユーザーの選択を回復しています。 JqG​​ridは、以下のように定義されます。ASP.NET MVC/JqGrid:JSON IDは処理され、回復可能ですか?

$("#StatusList").jqGrid({ 
     url: '@Url.Action("UpdateStatusList", "Inventory")', 
     datatype: 'json', 
     mtype: 'GET', 
     colNames: ['Status', 'statusId'], 
     colModel: [ 
      { name: 'Status', index: 'Status', align: 'left', sortable: false }, 
      { name: 'statusId', index: 'statusId', hidden: true}] 
}); 

私は、サーバーとクライアント間のすべての通信のためのすべての問題を持っていません。すべてうまく動作します。 JSONイドのために - :あなたはidが2回通過している見ることができるように

public ActionResult UpdateStatusList() 
    { 
    var jsonData = new 
    { 
     rows = (from status in DatabaseInMemory.WoodStatus.GetEntities() 
       select new 
       { 
        i = status.ID, 
        cell = new string[] { status.Name, 
           status.ID.ToString() } 
       }).ToArray() 
    }; 
    return Json(jsonData, JsonRequestBehavior.AllowGet); 
    } 

:しかし、私はJSONデータを送信し、この機能をJqGridを充填するとき、私はデータを複製していますように感じます。 - 私はグリッドからIDを回復するのに役立つ隠れた列のために。

クライアントに戻って、JSON Idはselarrrowプロパティに保持されません。このプロパティはグリッド内の位置に基づいてIDを保持します。選択したデータを取得して実際のIDを回復するために使用しています。

JqGridはJSONデータを通過するIDを処理し保持するのですか、それとも失われていますか、行を追跡するために常に非表示の列が必要ですか?

答えて

2

i = status.IDid = status.IDに変更する必要があります。

+0

は、答えに基づいて自分のウェブサイトを作成するために行った例のリファクタリングの提案を掲載しました:http://www.timdavis.com.au/code/jquery-grid-with-asp-net-mvc/ありがとう:) – Matthieu

+0

@マチュー:[答え]の更新部分を見て(http://stackoverflow.com/questions/5500805/asp-net-mvc-2-0-implementation-of-searching-in-jqgrid/ 5501644#5501644)。 [VS2008デモプロジェクト](http://www.ok-soft-gmbh.com/jqGrid/jqGridDemo.zip)または[VS2010デモプロジェクト](http://www.ok-soft-gmbh.com)をダウンロードできます。 /jqGrid/jqGridDemoVS2010.zip)。 「Oleg」の[ページ](http://haacked.com/archive/2009/04/14/using-jquery-grid-with-asp.net-mvc.aspx)で検索し、私のバグレポートを見つけることができます。このバグはPhil Haackのページで修正されていますが、Tim Davisのデモ版では修正されていません。 – Oleg

+0

いいです、あなたの答えを将来の参照として使用します。 – Matthieu

関連する問題