В стороне сервера я реализовал систему облачнойJqGrid зависит от количества возвращаемых записей
поэтому, когда JQGrid отправить запрос на сервер с rownumber
10 есть мой быть больше записей
, например в Бэк-конце там может быть 3 сервера,
сервер 1: возвращено 10 записей
2: возвращено 10 записей
3: 7 возвращается записей.
Итак, все записи - 27, но JqGrid просто показывает 10 из них на одной странице , а на следующей странице отправляет другой запрос на сервер.
«хороший JQGrid! Должны знать, что есть 3 страницы в 2 запроса персонального вызова не отправлять на сервер с помощью третьего пейджинга новый запрос будет отправить на сервер, чтобы принести следующие 10 записей»
У меня есть JQGrid configed как это:
$("#ExamGrid").jqGrid({
url: '../Handlers/Study/StudySearch.ashx',
editurl: '../Handlers/Study/StudySearch.ashx',
datatype: 'json',
beforeRequest: function() {
},
postData: {
},
//autowidth: true, // set 'true' here
//shrinkToFit: true,
height: 'auto',
autoencode: true,
ignoreCase: true,
forceFit: false,
colModel: $.evalJSON(colModel),
loadError: function (xhr, st, err) {
},
onPaging: function() {
},
resizeStop: function() {
SaveColumns();
},
onSelectRow: function (rowid, status, e) {
// studyInstanceUID = rowid;
},
multiselect: true,
rowNum: 10,
rowList: [10, 20, 30, 40],
pager: '#UsersGridPager',
page: parameters.PageIndex,
gridview: true,
sortname: 'Study Date',
prmNames: { nd: null },
hidegrid: false,
sortable: false,
jsonReader: { cell: "", search: "isSearch" },
viewrecords: true,
sortorder: 'desc',
caption: 'Exam List',
//viewsortcols: [true, 'vertical', false],
gridComplete: function() {
});
В стороне сервера:
IExamServiceJoinable examClient;
if (Global.IsCloudConfigured)
examClient = new DispatcherClient("dispatcherEndPoint", Token, Global.Cluster);
else
examClient = new ExamClient("examEndPoint");
TotalPatient = examClient.GetNumberOfStudies(criteria); //study.Count(authorityWhereClause, criteria, sm ?? new SearchMatching());
Start = ((pageIndex * numberOfRows) - numberOfRows);
TotalPage = TotalPatient/numberOfRows;
List<Study_C> studies = examClient.FindStudies(Start, numberOfRows, col.FromText(sortColumnName), sort.FromText(sortOrder), criteria);
В обычном случае, когда выборки запись с одного сервера все работает как шарм, но предположим Global.IsCloudConfigured
истинно, так что может быть несколько серверов и больше БД для этой услуги, извлекать записи из них, в этом случае studies
более чем запрашивается numberOfRows
.
сейчас с приведенным выше сценарием, как я могу настроить JQGrid для загрузки всех из них на одной странице или любой другой способ был бы оценен? Как я могу сделать умный JQGrid, чтобы это знать?
благодарит заранее.
Update: Существует очень не-эффективный способ добавить остается записей на одной странице в loadComplete
это работает, когда возвращаемые записи невысоки.
if (data.IsCloudConfigured == true) {;
for (var i = 0; i <= data.rows.length - 1; i++) {
var rowData = $("#ExamGrid").jqGrid('getRowData', data.rows[i].StudyUID);
if (rowData.StudyUID === undefined) {
$("#ExamGrid").addRowData(data.rows[i].StudyUID, data.rows[i]);
}
}
}
Спасибо за ваш быстрый ответ, 'loadonce' не является моим решением. Когда система« CloudConfiged », это произошло. в нормальном случае я возвращаю 10 записей в пейджинге, я не могу загрузить все записи в один запрос, есть миллионы записей. – Aria
@Aria: Если у вас есть сетка с миллионами записей, то пример с 27 не имеет отношения к вашей проблеме. Один из них зависит от некоторых чисел.Если мне нужно навестить моего друга, который живет в 300 м от меня, тогда я иду, если дом ИС находится в 5 км от меня, то я использую машину, и если он в 5000 км от меня, я выбираю самолет. Вы должны более точно сформулировать, что вам нужно реализовать. Вы должны изменить текст своего вопроса с более точной информацией. Вам нужно использовать разные URL-адреса в зависимости от номера страницы? Какую версию jqGrid вы используете и из какой вилки jqGrid? – Oleg
Посмотрите мое обновление, это немного понятно? – Aria