1

我在使用 jQgrid 时遇到问题,当我使用 json 数据类型初始化 jqgrid 时,它会导致错误:

obj 未定义

ret = obj[expr];

当我用本地数据类型初始化jqgrid时,不会出现错误但不会加载json数据

索引.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: 10000. 如果您要添加loadonce: true到网格中,rowNum:-1那么 jqGrid 将以错误的方式呈现网格。

您应该添加gridview: true以提高它的性能。最后一句话:是index:'invdate'打字错误的用法吗?

于 2012-04-13T15:34:32.877 回答