Поиск в середине столбца по умолчанию в jqGrid с помощью поиска на панели инструментов
Прочитав вики jqGrid (и взяв пример из: Поиск без учета регистра в jqGrid, включая скрытые поля), я не могу найти то, что хочу сделать.
Есть ли опция поиска, чтобы включить поиск в любом месте столбца (автоматически с подстановочными знаками).
Если столбец содержит "Apple Iphone", я смог бы найти его с помощью поиска "iphone".
SQL-эквивалент будет select * from table where lower(columnX) like '%iphone%';
3 ответа
Поскольку вы используете панель инструментов поиска, решение вашей проблемы кажется простым. Вам следует:
- включают
ignoreCase:true
к параметрам jqGrid - включают
defaultSearch:'cn'
возможность вызова filterToolbar. Например:$("#list").jqGrid('filterToolbar', {defaultSearch:'cn'})
, - Если вы используете какие-либо элементы выбора на панели инструментов поиска (
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});
Теперь, если ваш текст содержит "здесь я иду" и если вы ищете "идти", он, безусловно, будет искать, это работает для меня.
Попробуйте и ответьте, если это не так.