我在页面中有文本输入,我想用它来过滤我的 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);
}
}
}
我遇到的问题是这会将过滤器应用于所有列,但如果任何列未能通过过滤器表达式,则不会返回任何记录。我希望在至少一列包含“filterExpression”时返回记录。
希望你能帮忙