jqGrid, как применить пользовательскую фильтрацию / поиск - PullRequest
0 голосов
/ 20 января 2019

У меня есть jqGrid с filterToolbar. В одном из моих столбцов я хочу выполнить поиск, в котором для «теста фильтра» вызывается моя пользовательская функция, которая, очевидно, возвращает значение true, если да, то значение false для no.

Может ли jqGrid сделать это, если да, то как?

1 Ответ

0 голосов
/ 21 января 2019

Используя бесплатный форк jqGrid, вы можете использовать следующее

в вашей colModel добавьте значение searchchoptions следующим образом:

{name:'FIELD',width:120,searchoptions:{ sopt: ["cust"] },label:"Field name"}

затем добавьте следующее свойство в jqGrid

customSortOperations: {
    // the properties of customSortOperations defines new operations 
    // used in postData.filters.rules items as op peroperty
    cust:{
           operand: "Custom",// will be displayed in searching Toolbar for example
           text: "Custom",    // will be shown in Searching Dialog or operation menu in searching toolbar

           filter: function (options) {
                        // The method will be called in case of filtering on the custom operation "cust"
                        // All parameters of the callback are properties of the only options parameter.
                        // It has the following properties:
                        //     item        - the item of data (exacly like in mydata array)
                        //     cmName      - the name of the field by which need be filtered
                        //     searchValue - the filtered value typed in the input field of the searching toolbar

                        // Get cell data as lowercase
                        var fieldData = options.item[options.cmName].toLowerCase(),
                        // Get search terms all in lowercase
                        terms = $.map(options.searchValue.split(" "), function(val){ return $.trim(val).toLocaleLowerCase(); }),
                        // A match found
                        match = false;
                        // Loop through terms and see if there is a match in the row cell data
                        $.each(terms, function(i,v)
                        {
                            if(fieldData.indexOf(v) != -1)
                            {
                                match = true;
                                // Quit the each loop
                                return false;
                            }
                        });
                        return match;
                    }
                }
            },
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...