Точное совпадение в datagrid-фильтре - PullRequest
1 голос
/ 16 марта 2020

У меня возникли проблемы при попытке поиска точного соответствия в столбце таблицы с использованием фильтра данных.

Например: под столбцом Имя если я буду искать «Имя 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/

Ответы [ 2 ]

1 голос
/ 16 марта 2020

Добавьте следующее в начале документа, готового избежать чувствительного к регистру поведения.

$.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'
            }])

сделает Ваш скрипичный мод

1 голос
/ 16 марта 2020

Согласно документам , вы можете указать оператор по умолчанию для ваших фильтров, например:

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

При этом используются точные, с учетом регистра совпадения, которые могут или не могут быть тем, что вы хотите («имя 1» не будет работать, если имя «имя 1»). Я не видел вариант без учета регистра.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...