Поиск в середине столбца по умолчанию в jqGrid с помощью поиска на панели инструментов

Прочитав вики jqGrid (и взяв пример из: Поиск без учета регистра в jqGrid, включая скрытые поля), я не могу найти то, что хочу сделать.

Есть ли опция поиска, чтобы включить поиск в любом месте столбца (автоматически с подстановочными знаками).

Если столбец содержит "Apple Iphone", я смог бы найти его с помощью поиска "iphone".

SQL-эквивалент будет select * from table where lower(columnX) like '%iphone%';

3 ответа

Решение

Поскольку вы используете панель инструментов поиска, решение вашей проблемы кажется простым. Вам следует:

  1. включают ignoreCase:true к параметрам jqGrid
  2. включают defaultSearch:'cn' возможность вызова filterToolbar. Например: $("#list").jqGrid('filterToolbar', {defaultSearch:'cn'}),
  3. Если вы используете какие-либо элементы выбора на панели инструментов поиска (stype:'select') вы должны включить в список searchoptions sopt опции, начинающиеся с 'eq': stype:'select', searchoptions: {sopt:['eq','ne']} например.
$("#list").jqGrid('filterToolbar', {stringResult: true, searchOnEnter: false, defaultSearch : "cn"});

В приведенном выше примере **defaultSearch : "cn"** используется для поиска с использованием любой подстроки элемента, который вы хотите найти. Удаление defaultSearch : "cn" начинает поиск, начиная с подстроки.

$(document).ready(function() {
  colNamesData = [ 'Description']

  {name:'description',index:'description', width:130, sorttype:"text", search:true, editable:true, edittype:"textarea", editoptions: {rows:"5",cols:"25",maxlength:"255"}, stype:'text', searchoptions:{sopt:['cn', 'nc', 'bw', 'bn', 'ew', 'en']}},

$("#description_table").jqGrid({
      datatype: "local", 
      height: "auto",
      autowidth: true,
      ignoreCase: true,
      colNames: colNamesData, 
      colModel: colModelHash,
      pager: '#pager',
      rowNum:10,
      rowList:[10,25,50,100],
      sortname: 'date',
      sortorder: 'desc',
      viewrecords: true,
      editurl:"/url_name.json", 
      caption: 'Description'
 data:<%= raw @jqgrid_table.to_json %>
   });

   jQuery("#description_table").jqGrid('navGrid','#pager',{del:false,add:true,edit:false},{}, {modal: true,afterSubmit:processAddEdit,recreateForm:true, afterComplete:reloadJqGrid}, {modal: true}, {multipleSearch:true});  

Теперь, если ваш текст содержит "здесь я иду" и если вы ищете "идти", он, безусловно, будет искать, это работает для меня.

Попробуйте и ответьте, если это не так.

Другие вопросы по тегам