ページにテキスト入力があり、それを使用して jqxgrid をフィルタリングしたいと考えています。次のようなクエリを実行する必要があります
Select * from users where col1 = 'filterExpression' OR col2 = 'filterExpression' OR col3 = 'filterExpression' ...(for all filterable columns.
「filterExpression」はテキストボックスのテキストです。
次のコードをオンラインで見つけて、問題を半分解決しました。
function setGlobalFilter() {
var filtervalue = $('#FilterSubString').val();
var columns = $('#jqxgrid').jqxGrid('columns');
var filtergroup, filter;
// clear filters and exit if filter expression is empty
$('#jqxgrid').jqxGrid('clearfilters');
if (filtervalue == null || filtervalue == '') {
return;
}
// the filtervalue must be aplied to all columns individually,
// the column filters are combined using "OR" operator
for (var i = 0; i < columns.records.length; i++) {
if (!columns.records[i].hidden && columns.records[i].filterable) {
filtergroup = new $.jqx.filter();
filtergroup.operator = 'or';
filter = filtergroup.createfilter('stringfilter', filtervalue, 'contains');
filtergroup.addfilter(1, filter);
$('#jqxgrid').jqxGrid('addfilter', columns.records[i].datafield, filtergroup, true);
}
}
}
私が直面している問題は、これがすべての列にフィルターを適用することですが、列のいずれかがフィルター式に失敗した場合、レコードは返されません。少なくとも 1 つの列に「filterExpression」が含まれている場合にレコードが返されるようにします。
あなたが助けてくれることを願っています