【问题标题】:Exact match in datagrid-filter数据网格过滤器中的完全匹配
【发布时间】:2020-06-27 11:39:04
【问题描述】:

我在尝试使用 datagrid-filter 在表内的列中实现精确匹配搜索时遇到问题。

例如: 如果我搜索“名称 1”,则在 名称 列下,搜索结果将仅显示名称 1。 谁能教我怎么做? 非常感谢您的帮助。

        $(function(){
        var rows = [];
        for(var i=1; i<=800; i++){
            var amount = Math.floor(Math.random()*1000);
            var price = Math.floor(Math.random()*1000);
            rows.push({
                inv: 'Inv No '+i,
                date: $.fn.datebox.defaults.formatter(new Date()),
                name: 'Name '+i,
                amount: amount,
                price: price,
                cost: amount*price,
                note: 'Note '+i
            });
        }
        $('#tt').datagrid({
            view         : scrollview,
            striped      : true,
            pagination   : false,
            pageSize     : 50,
            singleSelect : false,
            autoRowHeight: false,
            remoteFilter : false,
            remoteSort   : true,
            multiSort    : true,
        });
        $('#tt').datagrid('enableFilter', [{
            field:'amount',
            type:'numberbox',
            options:{
                precision:0
            },
            op:['equal','notequal','less','greater']
        }])
        $('#tt').datagrid('loadData', rows);
    });

请参考这个jsfiddle: http://jsfiddle.net/6u2b8pyp/

【问题讨论】:

    标签: javascript jquery datagrid


    【解决方案1】:

    在准备好的文档的开头添加以下内容以避免区分大小写的行为

    $.fn.datagrid.defaults.operators = 
                {
                        equal: {
                                    text: 'Equal',
                                    isMatch: function(source, value){
                                        return source.toLowerCase() == value.toLowerCase();
                                    }
                                }
                };
    

    更换

    $('#tt').datagrid('enableFilter', [{
                    field:'amount',
                    type:'numberbox',
                    options:{
                        precision:0
                    },
                    op:['equal','notequal','less','greater']
                }])
    

    $('#tt').datagrid('enableFilter', [{
                    field:'amount',
                    type:'numberbox',
                    options:{
                        precision:0
                    },
                    op:['equal','notequal','less','greater']
                },{
                    field:'name',
                    type:'textbox',
                    options:{
                        precision:0
                    },
                    defaultFilterOperator: 'equal'
                }])
    

    会做Your fiddle mod

    【讨论】:

    • 非常感谢您。非常感谢您的帮助!
    【解决方案2】:

    根据the docs,您可以为过滤器指定默认运算符,如下所示:

    $('#tt').datagrid({
        (...)
        defaultFilterOperator: 'equal'
    });
    

    这使用精确的、区分大小写的匹配,这可能是也可能不是您想要的(如果名称是“名称 1”,则“名称 1”将不起作用)。我没有看到不区分大小写的选项。

    【讨论】:

      猜你喜欢
      • 2011-08-24
      • 2014-01-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-02-18
      • 2022-12-07
      相关资源
      最近更新 更多