2012-04-13 48 views
1

我在使用的jqGrid的麻煩,當我初始化JSON數據類型的的jqGrid它導致一個錯誤:獲得[obj爲undefined]中的jqGrid

obj is undefined

ret = obj[expr];

當我初始化本地數據類型的jqGrid的,將不會發生錯誤,但JSON數據將不會被加載

的index.html

<table id="products"></table> 
<div id="pager"></div> 

<script type="text/javascript"> 
$('document').ready(function(){ 
    jQuery("#products").jqGrid({ 
     url: 'product.php', 
     editurl: 'product_update.php', 
     datatype: "json", 
     mtype: 'POST', 
     colNames:['Product Name'], 
     colModel:[ 
      {name:'product_name',index:'product_name', width:90} 
     ], 
     rowNum:-1, 
     viewrecords: true, 
     rowList:[10,20,30], 
     pager: '#pager', 
     toolbar : [true,"top"], 
     sortorder: "DESC", 
     caption:"Products", 
     width: 940, 
     height: "100%" 
    }); 
}); 
</script> 

product.php(這是一個模擬數據只)

$arrayName = array(); 
    $arrayName['page'] = 1; 
    $arrayName['total'] = 1; 
    $arrayName['records'] = 3; 
    $arrayName['rows'][0] = array(
     'product_name' => 'Product X' 
     ); 
    $arrayName['rows'][1] = array(
     'product_name' => 'Product Y' 
     ); 
    $arrayName['rows'][2] = array(
     'product_name' => 'Product Z' 
     ); 

    echo json_encode($arrayName); 

JSON輸出:

{"page":1,"total":1,"records":3,"rows":[{"product_name":"Product X"},{"product_name":"Product Y"},{"product_name":"Product Z"}]}

我希望有人能幫助我在這裏。

預先感謝您:d JSON數據

回答

2

默認輸入格式 - 項目陣列ID,如

{"page":1,"total":1,"records":3,"rows":[ 
    {"id":"Product X", "cell":["Product X"]}, 
    {"id":"Product Y", "cell":["Product Y"]}, 
    {"id":"Product Z", "cell":["Product Z"]} 
]} 

(見here)。要讀取您當前發佈的數據,您應該將jsonReader: {repeatitems: false, id: "product_name"}選項添加到jqGrid定義中。

如果您使用jsonReader: {cell: "", id: "0"},那麼您將擁有最緊湊的輸入。在這種情況下,你應該JSON數據的格式更改爲

{"page":1,"total":1,"records":3,"rows":[ 
    ["Product X","Product Y","Product Z"]} 
]} 

此外,我不會建議你使用rowNum:-1。一些足夠大的正值的使用更好。例如rowNum: 10000。如果你想將loadonce: true添加到rowNum:-1的網格中,你會發現jqGrid會以錯誤的方式渲染網格。

您應該添加gridview: true以改善其性能。最後一句話:index:'invdate'的用法是輸入錯誤?

+0

謝謝Oleg,我不知道應該使用jsonReader。我之前已經使用過jqgrid,但是沒有遇到這個問題,並且基於我的舊項目的代碼。 我所做的是如上所述添加'jsonReader:{repeatitems:false,id:「product_name」}''。 謝謝你:D – jzarsuelo 2012-04-13 15:47:16

+0

@ user239431:不客氣! – Oleg 2012-04-13 16:50:03