Как повторно связать данные JQgrid после применения поиска к существующим данным сетки

У меня есть данные о клиенте, где я показываю статус счета клиентов, который работает нормально. Можно ли повторно связать сетку после того, как мы загрузили данные в сетку, например: когда я перехожу с другой страницы, как применить поиск в существующей сетке данные и повторно привязать их к сетке. Ниже моя colmodel и другие свойства, которые я использую, но не работаю должным образом,

 $("#BillDetails").jqGrid({
      url: '../Handler.ashx,
      datatype: "json",
      colNames: [ 'S.No', 'Bill NO', 'Customer Name', 'Customer Type', 'Bill Date',Bill Status'],
      colModel: [
      { name: 'SERIAL', sortable: false, search: true, stype: 'text', width: 40, hidden: false,
               align: 'right', sorttype: 'int' },
      { name: 'BILL_NO', sortable: false, search: true, width: 80, hidden: false, 
               align: 'right',formatter: editLink,},

      { name: 'CUSTOMER_NAME', search: true, align: 'left', width: 150, aligh: 'left', 
               sortable: false },
      { name: 'CHECK_TYPE', align: 'left', width: 150, search: true, aligh: 'left', 
               sortable: false},
      { name: 'BILL_DATE', width: 85, sortable: false, search: true, align: 'center', 
               sorttype: 'date', formatter: "date", formatoptions: { newformat: 'd/m/Y' } },
      { name: 'BILL_STATUS', width: 90, align: 'left', search: true, stype: 'select', 
               searchoptions: { value: 'Pending:Pending;
               On Hold:On Hold;Clear:Clear;Incompelete:InComplete,sortable: false } },
      ],
      width: '980',
      height: '450',
      shrinkToFit: false,
      sortable: true,             
      mtype: 'GET',
      scrollbar: true,
      sortname: 'BILL_NO',
      sortorder: 'asc',
      hidegrid: false,
      loadonce: true,
      ignoreCase: true,
      rowNum: 50,
      pager: '#Pager',
      viewrecords: true,
      // Search on page load from grid data
      gridComplete: function () {
          var searchFilter = "Clear";  // In this I will receive the the status from query string, 
                  //for   now i have provided the the hard core value to test
          var gridData = $("#jQGridDemo").jqGrid('getGridParam', 'data');
          console.log(gridData);
          if (searchFilter != "") {
          var grid = $("#BillDetails"), f;
          f = { rules: [] };
          f.rules.push({ field: "STATUS", op: "eq", data: searchFilter });
          grid[0].p.search = true;
          $("#BillDetails").setGridParam({ data: gridData, postData: { filters: f }, 
                    datatype:   "local", });
       }
     }
  });

person Den    schedule 23.12.2014    source источник


Ответы (1)


Если вы хотите перезагрузить jqGrid при переходе с другой страницы с параметрами поиска, вы можете использовать свойство postData для jqGrid.

Что-то вроде этого:

$("#BillDetails").jqGrid({
      url: '../Handler.ashx',
      datatype: "json",
      mtype: 'GET',
      postData:
      {
         Page: 'Dashboard',
         strUserID: strUserID,
      }

Вы можете заполнить это свойство с помощью js или на стороне сервера по мере необходимости.

ОБНОВЛЕНИЕ

Вы также можете использовать метод setGridParam jqgrid:

$("#BillDetails").jqGrid('setGridParam', 
{ 
    postData: {
       Page: 'Dashboard',
       strUserID: strUserID,
    }
});
$("#BillDetails").trigger("reloadGrid");

Но, насколько я понимаю, вы также просто добавляете значения в свойство postData. Также вы можете попробовать это следующим образом:

$("#BillDetails").trigger('reloadGrid', [{page:1}]);

Вы можете передать туда свои новые параметры, как при инициализации сетки.

person teo van kot    schedule 23.12.2014
comment
Страница и strUserID используются для идентификации запроса страницы, потому что я использую один обработчик для нескольких страниц. И я хочу применить поиск на стороне клиента только к данным json, которые я получил от обработчика. Спасибо - person Den; 23.12.2014
comment
Ну, этот подход позволяет вам сделать это. Все параметры из postData — это то, что вы получаете на стороне сервера, чтобы получить свой json для jqgrid. - person teo van kot; 23.12.2014
comment
Я пробовал это, но у меня не сработало, есть ли другой способ перепривязать сетку? - person Den; 23.12.2014
comment
вы можете передавать параметры прямо в параметр url, как вы уже делали, иначе я упоминаю в ответе. - person teo van kot; 23.12.2014