0

如何配置 free-jqGrid (4.8) filterToolbar 来搜索字段中的所有单词?

数据

  1. 一二三
  2. 二三四
  3. 一四三

搜索词

  • "一四" ,返回第 3 行
  • "四三" ,返回第 2 行和第 3 行
  • "one three" ,返回第 1 行和第 3 行
  • "four" ,返回第 2 行和第 3 行

jqGrid API

    $("#list").jqGrid({
    datatype: "local",
    colNames: ["Name"],
    colModel: [{
        name: "name",
        index: "name"
    }],
    caption: "Viz Test",
    pager: '#pager',
    search: true,
    multiselect: true,
    data: myData
    });

    jQuery("#list").jqGrid('filterToolbar', {
    searchOperators: true        
    });
4

1 回答 1

0

这是基于this answer,需要free-jqgrid 4.8,请参阅jsfiddle上的演示

colModel: [{
    name: "name",
    index: "name",
    searchoptions: {
        sopt: ["sIn", "bw", "cn", "lt", "le", "gt", "ge", "in", "ni"]
    }
}],


    customSortOperations: {
    // the properties of customSortOperations defines new operations
    // used in postData.filters.rules items as op peroperty
    sIn: {
        operand: "sIn", // will be displayed in searching Toolbar                             
        text: "String In", // will be shown in Searching Dialog 
                           // or operation menu in searching toolbar
        filter: function (options) {
            // called for filtering on the custom operation "sIn"
            // 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 - values in the input field of searching toolbar
            var fieldData = options.item[options.cmName];
            var words = options.searchValue.split(" ");                

            //loop thru each word in words array
            $.each(words, function () {
                //search for word in fielddata
                var searchResults = fieldData.search(this)
                //if not fouond
                if (searchResults < 0) {
                    fieldData = "";                        
                }
            });

            return fieldData;
        }
    }
于 2015-04-24T20:37:47.347 回答