У меня есть jqGrid, который указывает на внешний API, с которым я не контролирую. Этот внешний API, имеет две конечные точки:jqGrid set records count
- данных конечных точек - возвращает данные строки таблицы
- Count Конечная точка - Возвращает нумерации страниц отсчетов и т.д.,
на основе ввода пользователя Для jqGrid фильтра преобразуется в соответствующую строку запроса для фильтрации внешних API Данные и Подсчет Конечные точки.
У меня есть jqGrids url
динамично построен на основе от пользовательского ввода и нацелена на данные конечных точке ... и во время loadBeforeSend()
случае он вызывает Count Endpoint, чтобы получить последнюю информацию о постраничной, основанной на фильтре пользователей.
Я использую jsonreader возможности:
jsonReader: {
root: 'products',
id: 'id',
records: function() {
return gridTotal;
},
total: function() {
// var totalPages = (gridTotal + reqOptions.limit-1)/reqOptions.limit;
var totalPages = Math.ceil(gridTotal/reqOptions.limit);
console.log('totalPages: ' + totalPages);
return totalPages;
},
page: function() {
//var totalPages = Math.ceil(gridTotal/20);
console.log('currentPage: ' + reqOptions.page);
return reqOptions.page;
}
},
Пример метода loadBeforeSend:
loadBeforeSend: function (xhr, settings) {
settings.url = _newUrl || endpointURL;
// Lets fetch our data count...this may change as items get published so lets fetch during load
products.count(accessToken, _filterQuery)
.success(function (resp) {
// This is the total number of products that match our current search
gridTotal = resp.count;
}).catch(function (err) {
console.error(err);
});
}
Fetching из данных конечных точек работает очень хорошо, вопрос в том, как назвать Count Конечная точка и обновите данные разбивки на страницы.
Пробовал следующее:
- Использование
setGridParam
для записей, LAST_PAGE и т.д., - Использование
getGridParam('reccount')
- Просто обновить HTML, чтобы выглядеть правильно (не действует, так как пейджинг будет выключен)
Есть ли способ до
- Вручную отключить XHR для URL-адреса jqgrid ... поэтому я могу сначала запросить счетчик и когда он вернется, а затем перейдите к Data?
- Rerun функциональность jsonreader после возврата графа и
gridTotal
установлен - Используйте обещание как структура для решения подсчитывать записи
Обновлено показать @Oleg Раствора
loadBeforeSend: function (xhr, settings) {
settings.url = _newUrl || endpointURL;
// Lets fetch our data count...this may change as items get published so lets fetch during load
products.count(accessToken, _filterQuery)
.success(function (resp) {
// This is the total number of products that match our current search
gridTotal = resp.count;
gridTotal = resp.count;
grid.jqGrid('setGridParam', {
page: gridOpts.jsonReader.page(),
records: gridTotal,
lastpage: gridOpts.jsonReader.total()
});
grid[0].updatepager(false, true);
}).catch(function (err) {
console.error(err);
});
}
Да, ваше понимание вопроса верное, я надеялся, что я объясню его достаточно хорошо, хорошая работа =) ... Отлично, я наткнулся на этот «старый ответ», но «pageServer», «recordsServer» и «lastpageServer» 'были пустыми. Вместо того, чтобы захватывать «getGridParam» с помощью этих полей, я просто вспоминаю свои функции jsonreader. Большое спасибо!! @Oleg #FTW #Again – afreeland
@afreeland: Добро пожаловать! – Oleg