free-jqGrid filterToolbar包含一些单词的客户端搜索

时间:2015-04-24 18:05:00

标签: jqgrid free-jqgrid

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

数据

  1. 一二三
  2. 二三四
  3. 一四四
  4. 搜索字词

    • “一四”,返回第3行
    • “四个三”,返回第2行和第3行
    • “一三”,返回第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        
        });
    

1 个答案:

答案 0 :(得分:0)

这是基于此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;
        }
    }