Проблема с пейджером jqGrid после добавления строки с помощью addRowData - PullRequest
4 голосов
/ 05 сентября 2011
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 ]

1 голос
/ 16 ноября 2017

Обновление вызова после добавления строки jQuery("#grid").trigger("reloadGrid");

1 голос
/ 05 сентября 2011

Вы не опубликовали полный код, который используете.Поэтому я могу только догадываться, что вы делаете.

Если у вас есть в ajaxResponse полные данные, которые вы используете для заполнения сетки, вы можете создать сетку с данными.Вы можете использовать data: ajaxResponse вместе с gridview: 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'
});

(см. Демонстрацию здесь )

Если вы получаете данные с сервера в формате 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'.Смотрите второе демо здесь .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...