2011-07-28 39 views
0

我一直在嘗試使用jqGrid 4.1.2呈現表,我能夠從服務器端獲得JSON響應,但我得到空表。 我的繼承人樣本JSON數據:jqGrid呈現空表

{ 
    "response":{ 
     "total":2, 
     "page":1, 
     "rows":[{ 
       "id":135060, 
       "cell":{ 
        "id":135060, 
        "name":"12" 
       } 
      }, 
      { 
       "id":115060, 
       "cell":{ 
        "id":115060, 
        "name":"12345" 
       } 
      } 
     ] 
    }, 
    "status":"SUCCESS", 
    "errors":[] 
} 

我已經加入了該jqGrid的語言環境,en.js文件,所以不應該是問題。花了一些時間後,我覺得它與jqGrid期望的JSON格式有關,如果這是問題,有人可以告訴我如何配置jqGrid接受上述JSON格式。

謝謝!

回答

0

默認情況下,jqGrid不希望單元格中的數據包含name:value pairsings。如果你想使用name:value配對,那麼你需要考慮使用jsonReader選項並將repeatitems設置爲false。還要確保每個鍵的名稱與相應的colModel名稱完全相同。

很難說沒有更多的代碼。問這樣的問題的時候,但嘗試這樣的事情與你設置任何其它選項,您應該張貼所有代碼...

$("#id").jqGrid({ 
    url: "url" 
    mtype: "post", 
    datatype: "json", 
    jsonReader: { 
     repeatitems: false, 
     root: "response.rows", 
     cell: "cell", 
     id: "id", 
     page: "page", 
     total: "total", 
     records: "records" 
    }, 
}); 

它看起來就像你不傳回一個記錄鍵後,這是你的服務器端返回的行總數

1

對於這個問題仍然沒有解決的情況是解決方案。您應該使用以下jsonReader

jsonReader : { 
    repeatitems : false, 
    root: 'response.rows', 
    page: 'response.page', 
    total: 'response.page', 
    records: function (obj) { return obj.response.rows.length; } 
} 

,則數據將被讀取(見the demo)。我想你在JSON數據中使用了不正確的total屬性,並且根本不設置records屬性。

此外,您不應該在標準響應中設置錯誤消息。 HTTP協議支持status codes。如果您在服務器端檢測到錯誤,則服務器應在HTTP標頭中設置error HTTP code。如果jqGrid中的數據處理順序爲another way,並且您應該使用loadError事件來解碼錯誤消息並顯示用戶的結果。