Free jqGrid позволяет определить пользовательскую операцию поиска / фильтрации в отношении опции customSortOperations
.По умолчанию соответствующая пользовательская операция сравнения будет иметь два операнда.Унарные операции должны указываться в опции customUnaryOperations
дополнительно.Эта функция изначально описана в статье вики .Можно найти несколько примеров использования функции в стеке потока.
Пользовательские операторы сравнения / фильтрации, определенные в customSortOperations
, должны быть включены в определение соответствующего столбца в массиве searchoptions.sopt
. Демо использует следующий код:
colModel: [
...
{ name: "name", align: "justify", width: 87, editrules: { required: true },
autoResizing: { minColWidth: 87 },
createColumnIndex: true,
searchoptions: {
generateDatalist: true,
sopt: [ "cn", "em", "nm", "in", "ni",
"teq", "tne",
"eq", "bw", "ew", "bn", "nc", "en" ],
clearSearch: true
} },
...
],
customUnaryOperations: ["em", "nm"],
customSortOperations: {
em: {
operand: "=''",
text: "is empty",
filter: function (options) {
var v = options.item[options.cmName];
if (v === undefined || v === null || v === "") {
return true;
}
}
},
nm: {
operand: "!=''",
text: "isn't empty",
filter: function (options) {
var v = options.item[options.cmName];
if (v !== undefined && v !== null && v !== "") {
return true;
}
}
},
teq: {
operand: "==",
text: "Turkish insensitive \"equal\"",
filter: function (options) {
var fieldData = String(options.item[options.cmName]).replace(/i/g,'İ').toUpperCase(),
searchValue = options.searchValue.replace(/i/g,'İ').toUpperCase();
return fieldData === searchValue;
}
},
tne: {
operand: "!=",
text: "Turkish insensitive \"not equal\"",
filter: function (options) {
var fieldData = String(options.item[options.cmName]).replace(/i/g,'İ').toUpperCase(),
searchValue = options.searchValue.replace(/i/g,'İ').toUpperCase();
return fieldData !== searchValue;
}
}
},
Код определяет 4 пользовательских операции: «em», «nm», «teq», «tne», где «em» («is empty») и «nm» («not empty») являются унарными операциями.Я получаю код из моих старых ответов: этот и другой .
Пользовательские операции доступны на панели инструментов поиска и в диалоговом окне поиска:
Я думаю, что это функция, которая вам нужна.Я бы порекомендовал вам дополнительно прочитать другой ответ , который соответствует вашим требованиям.Я думаю, что простая модификация кода может решить вашу проблему.