0

Я работаю с Asp.net MVC4, jqgrid 4.4.4 и jquery 1.9 jqGrid загружается из запроса в базу данных, но я не могу фильтровать поля, когда я поставить значение не ищет, оно показывает мне те же значения, но когда я определяю в jqgrid значение loadonce: true только на первой странице поиска, как я могу решить эту проблему? Где я должен изменить код?Загрузка jqgrid из базы данных не работает filterToolbar

Это мой код, jqgrid:

jQuery(document).ready(function() { 
     jQuery("#tbBuscaRec").jqGrid({ 
      url: '@Url.Action("DatosBuscaPersona", "raTabPersonaReclamante")', 
      datatype: 'json', 
      mtype: 'POST',  
      postData: { Parametro: Param }, 
      colNames: ['Id', 'IdPer', 'Doc', 'CI/NIT', 'Nombres', 'Apellido Paterno', 'Apellido Materno', 'Apellido Esposo'], 
      colModel: 
      [ 
       { name: 'ip_idpersona', index: 'ip_idpersona', formatter: 'number', hidden: true }, 
       { name: 'ip_idpersonadoc', index: 'ip_idpersonadoc', formatter: 'text', hidden: true }, 
       { name: 'ip_partipodoc', index: 'ip_partipodoc', align: 'left', width: '4', editable: true, edittype: 'text', editoptions: { readonly: true }, search: false }, 
       { name: 'ip_nrodoc', index: 'ip_nrodoc', sortable: true, align: 'left', width: '8', editable: true, edittype: 'text', editoptions: { readonly: true} }, 
       { name: 'ip_nombres', index: 'ip_nombres', sortable: true, align: 'left', width: '15', editable: true, edittype: 'text', editoptions: { readonly: true} }, 
       { name: 'ip_appaterno', index: 'ip_appaterno', sortable: true, align: 'left', width: '15', editable: true, edittype: 'text', editoptions: { readonly: true } }, 
       { name: 'ip_apmaterno', index: 'ip_apmaterno', sortable: true, align: 'left', width: '15', editable: true, edittype: 'text', editoptions: { readonly: true} }, 
       { name: 'ip_apesposo', index: 'ip_apesposo', sortable: false, align: 'left', width: '15', editable: true, edittype: 'text', editoptions: { readonly: true} } 
      ], 
      pager: '#pg_tbBuscaRec', 
      rowNum: 100, 
      rowList: [100, 200, 300], 
      sortname: 'ip_nombres', 
      sortorder: 'asc', 
      rownumbers: true, 
      multiselect: false, 
      gridview: true, 
      height: 180, 
      width: 490, 
      ignoreCase: true, 
//   loadonce: true, 
     }); 
    }); 
    jQuery("#tbBuscaRec").jqGrid('navGrid', '#pg_tbBuscaRec', { view: false, edit: false, add: false, del: false }, {}, {}, {}, { multipleSearch: true, closeAfterSearch: true, closeOnEscape: true }); 
    jQuery("#tbBuscaRec").jqGrid('filterToolbar'); 
    jQuery("#tbBuscaRec").trigger("reloadGrid", [{ current: true}]); 
+0

если вы хотите использовать 'loadonce: true' действия контроллера' @ Url.Action ("DatosBuscaPersona", "raTabPersonaReclamante") 'должны возвращать ** все данные ** (вместо одной страницы данные), отсортированные в соответствии с 'sidx' и' sord'. В качестве альтернативы вам необходимо выполнить ** фильтрацию на стороне сервера ** (см. Ответ Марка) – Oleg

ответ

1

По умолчанию фильтрация будет обрабатываться вашим контроллером, и вы увидите эти значения передаются в контроллер в _search и filters.

Причина, по которой loadonce: true работает на первой странице, заключается в том, что она выполняет фильтрацию на стороне клиента.

Я бы предложил проверить ответ Олега на фильтрацию по ссылке ниже, это то, что поставило меня на трек, чтобы сделать фильтрацию на стороне сервера для моего приложения.

ASP.NET MVC 2.0 Implementation of searching in jqgrid

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