jqGrid本地数据搜索

发布于 2024-12-22 09:56:30 字数 2236 浏览 0 评论 0原文

我正在使用 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"]
        }, (...)
    }
}

I'm using jqGrid plugin to show some data (locally), so

    $("#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
});

The problem is about searching. When I enter text on any toolbar for searching, all row data disappear. I've seen this demo http://www.trirand.com/blog/jqgrid/jqgrid.html and I can't find what is wrong.

Is there anything missing on my grid?

Thanks in advance

EDIT:

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;
} 

The Json has the following format

{
    "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"]
        }, (...)
    }
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

_失温 2024-12-29 09:56:30

抱歉,但我在您发布的网格中没有看到任何问题。查看演示

我还可以向您推荐一件事。您最好使用 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
});

请参阅下一个演示

Sorry, but I don't see any problem in the grid which you posted. Look at the demo.

One thing I can recommend you additionally. You should better use datatype: 'json' and mtype: 'POST' to get the data directly from the server without needs to make separate $.post call. You need just use the following settings:

$("#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
});

See the next demo.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文