首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >jqxgrid多列过滤器

jqxgrid多列过滤器
EN

Stack Overflow用户
提问于 2014-03-05 05:45:12
回答 1查看 2.6K关注 0票数 0

我有一个页面中的文本输入,我想用它来过滤我的jqxgrid。它应该执行与以下内容类似的查询

代码语言:javascript
复制
Select * from users where col1 = 'filterExpression' OR col2 = 'filterExpression' OR col3 = 'filterExpression' ...(for all filterable columns. 

其中'filterExpression‘是我的文本框中的文本。

我在网上找到了以下代码,它为我解决了一半的问题。

代码语言:javascript
复制
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”时,我希望返回记录。

希望你能帮上忙

EN

回答 1

Stack Overflow用户

发布于 2014-03-28 02:50:54

您需要的是过滤器之间的"OR“操作。查看API的函数AddFilter()后,您可以在同一列上的两个过滤器之间设置OR操作。但是look likes ()不提供在两列之间执行相同操作的方法。

您可以在这里查看API:

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

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

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

但是我想您最好的选择是在服务器端执行此操作,然后重新加载数据。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22183749

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档