1

jQgrid の使用に問題があります。json データ型で jqgrid を初期化すると、エラーが発生します。

obj は未定義です

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" :"商品Z"}]}

ここで誰かが私を助けてくれることを願っています。

よろしくお願いします:D

4

1 に答える 1

2

JSON データのデフォルトの入力形式 - のような 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"]}
]}

ここを参照)。現在投稿しているデータを読み取るには、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: 10000loadonce: trueグリッドに追加する場合rowNum:-1、jqGrid はグリッドを間違った方法でレンダリングします。

パフォーマンスを向上させるには、 gridview: trueを追加する必要があります。最後の発言: の使用法index:'invdate'は入力エラーでしたか?

于 2012-04-13T15:34:32.877 に答える