2016-08-09 4 views
0

В стороне сервера я реализовал систему облачной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]); 
         } 
        } 
       } 

ответ

0

Я надеюсь, что правильно поняла вашу проблему. В случае, если сервер (любой из серверов на облаке) должен просто вернуть все записи (27 строк данных) сразу. Вам нужно просто использовать опцию loadonce: true, чтобы сообщить jqGrid, чтобы заполнить локальный data на основе данных, возвращаемых с сервера. Это позволит использовать локальный поисковый вызов, сортировку и фильтрацию/поиск.

Если вы используете free jqGrid вилку jqGrid, которую я разработал, тогда я бы рекомендовал использовать опцию forceClientSorting: true в сочетании с loadonce: true. Он позволяет сортировать и фильтровать локально данные, возвращенные с сервера, перед их отображением в сетке.

+0

Спасибо за ваш быстрый ответ, 'loadonce' не является моим решением. Когда система« CloudConfiged », это произошло. в нормальном случае я возвращаю 10 записей в пейджинге, я не могу загрузить все записи в один запрос, есть миллионы записей. – Aria

+0

@Aria: Если у вас есть сетка с миллионами записей, то пример с 27 не имеет отношения к вашей проблеме. Один из них зависит от некоторых чисел.Если мне нужно навестить моего друга, который живет в 300 м от меня, тогда я иду, если дом ИС находится в 5 км от меня, то я использую машину, и если он в 5000 км от меня, я выбираю самолет. Вы должны более точно сформулировать, что вам нужно реализовать. Вы должны изменить текст своего вопроса с более точной информацией. Вам нужно использовать разные URL-адреса в зависимости от номера страницы? Какую версию jqGrid вы используете и из какой вилки jqGrid? – Oleg

+0

Посмотрите мое обновление, это немного понятно? – Aria

Смежные вопросы