Пользовательский фильтр записей в Free-jqgrid 4.15.4 - PullRequest
0 голосов
/ 08 октября 2018

У меня есть один вопрос относительно пользовательских фильтров в бесплатной jqGrid 4.15.4.Я хочу реализовать функцию поиска, в которой, если я выберу фильтр «меньше чем, но не пусто», он будет показывать только те строки записей, столбец которых не является пустым или пустым.Я могу создать пользовательский фильтр, который выдает 'is null' или 'not null' из этой темы .Но когда я попытался создать для себя требование, я не смог выяснить, какой оператор я должен использовать для «меньше, но не ноль или пусто».

Например, я использовал этот пример кодачтобы создать собственный фильтр:

 customUnaryOperations: ["lne"],
 customSortOperations: {
           lne: {
                operand: "<!=''",
                text: "less but not empty",
                filter: function (options) {
                    var v = options.item[options.cmName];
                    if (v !== undefined && v !== "") {
                        return true;
                    }
                }
            }

Вышеупомянутый оператор, который я использовал в панели инструментов параметров поиска.

searchoptions: {
                     searchOperators: true,
                     sopt: ['eq', 'lt', 'gt','lne'],
                 }, search: true, 

Между тем, я не хочу использовать formatter: "integer" (здесь предлагается ), поскольку это только присваивает 0 всем ячейкам столбца нулевой записии остается видимым в записях всякий раз, когда выбирается фильтр 'меньше чем' .

Для справки, я создал одну скрипку , которая состоит из требования и двух изображений для большей ясности.Итак, кто-нибудь может мне помочь в этом?Я надеюсь, что я снова спросил это снова.

Заранее спасибо.

Grid_With_NoFiltersIN_SalaryField

Grid_with_Filter_InSalary_ButEmptyRecords

1 Ответ

0 голосов
/ 08 октября 2018

Код фильтра может быть следующим:

customSortOperations: {
    lne: {
        operand: "<!=''",
        text: "less but not empty",
        filter: function (options) {
            var v = options.item[options.cmName];

            if (v !== undefined && v !== "" &&
                    parseFloat(v) < parseFloat(options.searchValue)) {
                return true;
            }
        }
    }
}

См. Модифицированную демонстрацию https://jsfiddle.net/OlegKi/x3fger4z/17/

...