2013-11-29 131 views
-1

我在控制器中有以下方法,我從我的視圖調用填充jqgrid。此方法工作正常並返回數據。如何將jsonResult對象綁定到jqgrid?

public JsonResult _FirstLook() 
{ 
    HttpResponseMessage response; 

    response = client.GetAsync("api/CasoAdverso").Result; 
    if (response.IsSuccessStatusCode) 
     { 
      IEnumerable<CasoAdverso> list = response.Content.ReadAsAsync<IEnumerable<CasoAdverso>>().Result; 

      return Json(list); 
     } 
} 

如果我調試正在返回的結構將如下圖所示。對象列表中的數據:

enter image description here

我將總結CasoAdverso類,因爲它是相當大的投入在這裏:

public class CasoAdverso 
{ 
    public int CAAD_Id { get; set; } 
    public string CAAD_Id_Local { get; set; } 
    public System.DateTime? CAAD_Fecha_Contacto { get; set; } 
} 

實際接收的數據來填充,但不知何故jqGrid的不正在顯示:

$(grid_selector).jqGrid({ 
datatype: "json", 
height: 250, 
mType: 'GET', 
url: "@Url.Action("_FirstLook", "CasoAdversoForm")", 
colNames: ['ID', 'ID Caso', 'Fecha Contacto Notif.'], 
     colModel: [ 
      { name: 'CAAD_Id', index: 'CAAD_Id', key: true }, 
      { name: 'CAAD_ID_Local', index: 'CAAD_ID_Local', width: 60, editable: false }, 
      { name: 'CAAD_Fecha_Contacto', index: 'CAAD_Fecha_Contacto', width: 90, editable: false, sorttype: "date", unformat: pickDate }, 
     ], 
    ... 
     }, 

我知道該解決方案可能通過jqReader中的jqgrid,但我不能做任何p沒有完全改變控制器中的_FirstLook方法。

在我的方案中,我需要更改jqgrid來綁定我目前從控制器獲取的內容。在控制器中,不必爲jqgrid默認需要做一些解決方法。

+0

請定義「綁定」:期望的行爲是什麼?它與實際行爲有什麼不同? – Saturnix

+0

在這種情況下,綁定將設置jsonReader,它將網格所期望的結構與JsonResult對象的結構「鏈接」。 預期的行爲將填充和顯示,但這不會發生...... – Javier

+0

這裏有一個jsonreader的例子:http://stackoverflow.com/questions/14748169/jqgrid-jsonreader-configuration – Javier

回答

2

我想所描述的問題的主要原因不是「綁定」。您使用mType: 'GET'選項,因爲名稱mType的選項不存在,所以將被忽略。因此將使用默認選項值mtype: 'GET'mtype而不是mtype)。所以,你應該要麼使用mtype: 'POST'或更換線路

return Json(list); 

return Json(list, JsonRequestBehavior.AllowGet); 

此外,我會建議您確認您使用loadonce: true選項,因爲你沒有在你的服務器代碼中實現服務器端分頁。我建議您另外使用gridview: true,autoencode: true選項,並考慮使用height: "auto"而不是height: 250