2011-08-18 56 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數據填充的jqGrid的時候我好像複製數據:

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); 
    } 

正如你所看到的ID傳遞兩次: - 爲JSON標識。 - 用於幫助我從網格中恢復ID的隱藏列。

回到客戶端,JSON ID不在selarrrow屬性中。該屬性擁有基於網格中位置的ID。我用它來獲取選定的數據,並恢復真正的ID。

JqGrid是否處理並保存通過JSON數據傳遞的id,或者是否丟失,並且始終需要隱藏的列來跟蹤行?

回答

2

您應該將i = status.ID更改爲id = status.ID

+0

發佈了一個重構命題,用於根據您的回答創建我的網站的示例:http://www.timdavis.com.au/code/jquery-grid-with-asp-net-mvc/。謝謝:) – Matthieu

+0

@Matthieu:看看[答案]的更新部分(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)。你可以在[頁面](http://haacked.com/archive/2009/04/14/using-jquery-grid-with-asp.net-mvc.aspx)上搜索「Oleg」並找到我的錯誤報告。這些錯誤是在菲爾哈克的頁面上修復的,但不是蒂姆戴維斯的演示副本。 – Oleg

+0

不錯,將來會用你的答案作爲參考,thx! – Matthieu

相關問題