jqxgrid多列过滤器

时间:2014-03-04 21:45:12

标签: filtering multiple-columns jqxgrid

我在页面中输入文本,我想用它来过滤我的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);
        }
    }
}

我遇到的问题是这会将过滤器应用于所有列,但如果任何列都失败了过滤器表达式,则不会返回任何记录。我希望在AT至少一列包含'filterExpression'时返回记录。

希望你能帮忙

1 个答案:

答案 0 :(得分:0)

您需要的是过滤器之间的“OR”操作。查看API的函数AddFilter()后,可以在同一列的两个过滤器之间设置OR运算。但是看起来像AddFilter()没有提供在两列之间做同样的方法。

您可以在此处查看API:

http://www.jqwidgets.com/jquery-widgets-documentation/documentation/jqxgrid/jquery-grid-api.htm

您也可以在这里搜索/询问此功能(jQWidgets团队通常会快速响应):

http://www.jqwidgets.com/community/

但我想你最好的选择是在服务器端进行,然后重新加载你的数据。