使用addRowData添加行后的jqGrid寻呼机问题

时间:2011-09-05 12:03:56

标签: javascript jquery-plugins jqgrid

var index = 'id';
var ajaxResponse = [{id: 1, name: 'John', email: 'john@doe.co.uk'}, {id: 2, name: 'Michael', email: 'michael@example.com'}];
$('#grid').addRowData(index, ajaxResponse);

逐个添加多行后,寻呼机不会影响每页限制,寻呼机也会报告第1页的0。

从网格页脚点击刷新按钮后,我看到每页的行数和正确的页数。

关于如何修复的任何想法?

感谢。

2 个答案:

答案 0 :(得分:1)

您没有发布您使用的完整代码。所以我只能猜测你做了什么。

如果您在ajaxResponse中有用于填充网格的完整数据,则可以使用数据创建网格。您可以将data: ajaxResponsegridview: true一起使用。在这种情况下,将立即创建整个网格:

var mydata = [
        {id: 1, name: 'John', email: 'john@doe.co.uk'},
        {id: 2, name: 'Michael', email: 'michael@example.com'}
    ];

$("#list").jqGrid({
    datatype: 'local',
    data: mydata,
    colNames: ['Name', 'E-Mail'],
    colModel: [
        {name: 'name', width: 100},
        {name: 'email', width: 150}
    ],
    rowNum: 5,
    rowList: [5, 10, 20],
    pager: '#pager',
    gridview: true,
    rownumbers: true,
    sortname: 'name',
    sortorder: 'desc',
    caption: 'Just simple local grid',
    height: 'auto'
});

(参见演示here

如果您使用JSON格式从服务器获取数据

[
    {"id": 1, "name": "John",    "email": "john@doe.co.uk"},
    {"id": 2, "name": "Michael", "email": "michael@example.com"}
]

您可以将url参数设置为提供数据的服务器URL并使用

$("#list").jqGrid({
    url: 'Nicolae2.json',
    datatype: 'json',
    jsonReader: {
        repeatitems: false,
        root: function (obj) { return obj; },
        page: function () { return 1; },
        total: function () { return 1; },
        records: function (obj) { return obj.length; }
    },
    loadonce: true,
    colNames: ['Name', 'E-Mail'],
    colModel: [
        {name: 'name', width: 100},
        {name: 'email', width: 150}
    ],
    rowNum: 5,
    rowList: [5, 10, 20],
    pager: '#pager',
    gridview: true,
    rownumbers: true,
    sortname: 'name',
    sortorder: 'asc',
    caption: 'Just simple local grid',
    height: 'auto'
});

从服务器直接为每个Ajax 填充网格。您必须提供正确排序数据的唯一限制。所以我将前一个示例中的sortorder: 'desc'更改为sortorder: 'asc'。请参阅第二个演示here

答案 1 :(得分:1)

添加行jQuery("#grid").trigger("reloadGrid");

后调用刷新