jqGrid搜索本地数据

时间:2011-12-20 16:38:22

标签: jquery search jqgrid local

我使用jqGrid插件显示一些数据(本地),所以

    $("#myList").jqGrid({
        datatype : 'jsonstring',
        datastr : getMyJson(),
        colNames : ['ID', 'TITLE', 'PROFILE'],
        colModel : [{
            name : 'Id',
            index : 'Id',
            width : 50,
            sorttype : 'int'
        }, {
            name : 'Title',
            index : 'Title',
            width : 100
        }, {
            name : 'Profile',
            index : 'Profile',
            width : 80
        }],
        jsonReader : {
            root : "rows",
            page : "page",
            total : "total",
            records : "records",
            repeatitems : true,
            cell : "cell",
            id : "id"
        },
        autoencode : true,
        ignoreCase : true,
        autowidth : true,
        cache : false,
        shrinkToFit : false,
        height : 500,
        rowNum : 3000,
        rowList : [10, 20, 30],
        pager : jQuery('#pager1'),
        viewrecords : true,
        sortable : true,
        loadonce : true,
        gridview : true,
        sortorder : "asc",
        multiselect : true,
        caption : "My List",
        emptyrecords : 'No results'
    });

$("#myList").jqGrid('filterToolbar', {
    stringResult : true,
    searchOnEnter : false
});

问题在于搜索。当我在任何工具栏上输入文本进行搜索时,所有行数据都会消失。我已经看过这个演示版http://www.trirand.com/blog/jqgrid/jqgrid.html而且我找不到错误。

我的网格上有什么遗漏吗?

提前致谢

编辑:

function getMyJson() {
    var json;
    jQuery.ajaxSetup({
        async : false
    });
    $.post(BIN_ROOT + "getdata.php", function(data, textStatus) {
        json = data.Mytable;
    }, "json");
    jQuery.ajaxSetup({
        async : true
    });

    return json;
} 

Json具有以下格式

{
    "errorCode": 0,
    "errorDesc": "No Error",
    "MyTable": {
        "page": 1,
        "total": 1,
        "records": 12,
        "rows": [{
            "id": "41",
            "cell": ["41", "Title1", "User"]
        }, {
            "id": "30",
            "cell": ["30", "Title1", "Admin"]
        }, (...)
    }
}

1 个答案:

答案 0 :(得分:1)

抱歉,我发布的网格中没有任何问题。请看the demo

我还可以向你推荐一件事。您最好使用datatype: 'json'mtype: 'POST'直接从服务器获取数据,而无需单独调用$.post。您只需使用以下设置:

$("#myList").jqGrid({
    url: BIN_ROOT + "getdata.php",
    datatype: 'json',
    mtype: 'POST',
    jsonReader : {
        root : "MyTable.rows",
        page : "MyTable.page",
        total : "MyTable.total",
        records : "MyTable.records"
    },
    //... other parameter which you use
});

请参阅the next demo