jqGrid过滤器工具栏显示没有搜索关键字的记录

时间:2017-01-27 17:34:10

标签: jquery jqgrid

我在jqGrid下面有过滤器工具栏。过滤正在运行。但是当我在名字搜索列中键入“N”时,它列出了其中没有“N”的记录。这将在下面的屏幕截图中显示。我们如何解决这个问题?

Fiddle

enter image description here

CODE

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title>Test</title>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

    <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
    <link href="https://cdnjs.cloudflare.com/ajax/libs/jqueryui/1.12.1/themes/start/jquery-ui.css" rel="stylesheet" />
    <link href="https://cdnjs.cloudflare.com/ajax/libs/jqgrid/4.6.0/css/ui.jqgrid.css" rel="stylesheet" />
    <script src="https://code.jquery.com/ui/1.10.4/jquery-ui.min.js"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/jqgrid/4.6.0/js/jquery.jqGrid.min.js"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/jqgrid/4.6.0/js/i18n/grid.locale-en.js"></script>



    <script type="text/javascript">
    //<![CDATA[
        $(document).ready(function () {
            var myData = [

                { "id": "35", "firstname": null, "codeval": "G", "note": "xx7866", "amount": "23" },
                { "id": "73", "firstname": null, "codeval": "W", "note": "dd1047", "amount": "34" },
                { "id": "75", "firstname": "LORA", "codeval": "H", "note": "rr7323", "amount": "56" },
                { "id": "95", "firstname": "EST", "codeval": "M", "note": "gg574", "amount": "55" }
                ],

                myGrid = $("#list");

            myGrid.jqGrid({
                datatype:'local',
                data: myData,
                colNames: ['ID', 'FirstName', 'Code', 'Amount', 'Note'],
                colModel:[
                    {name:'id',index:'id',width:70,align:'center',sorttype: 'int'},
                    {name:'firstname',index:'firstname',width:80, align:'center'},
                    { name: 'codeval', index: 'codeval', width: 70 },
                    {name:'amount',index:'amount',width:100, formatter:'number', align:'right'},
                    {name:'note',index:'note',width:100,sortable:false}
                ],
                rowNum:10,
                pager: '#pager',
                gridview:true,
                ignoreCase:true,
                rownumbers:true,
                viewrecords: true,
                sortorder: 'desc',
                height: '100%'
            });
            myGrid.jqGrid('filterToolbar', { stringResult: true, searchOnEnter: false, defaultSearch: "cn" });

        });
    //]]>
    </script>
</head>
<body>
    <table id="list"><tr><td/></tr></table>
    <div id="pager"></div>

</body>
</html>

1 个答案:

答案 0 :(得分:1)

您描述了jqGrid 4.6中的错误。

The line

phrase.push("String("+s+")");
应修复jqGrid代码的

,例如,修改为以下

phrase.push("String(" + s + " || '')");

主要问题:你使用 jqGrid的死版本:4.6,大约3岁。现在存在jqGrid的两个主要分支:商业Guriddo jqGrid JS和替代分叉free jqGrid,我开发了它。

如果您要使用当前版本的免费jqGrid(版本4.13.6),那么我建议您使用jsonmap作为解决方法

{ name: 'firstname', width: 80, align: 'center',
    jsonmap: function (item) {
        return item.firstname != null ? item.firstname : "";
     } }

请参阅演示:https://jsfiddle.net/OlegKi/rqab1veh/1/

当然,我修复了最新的免费jqGrid代码中的错误(参见the commit)。您可以从GitHub下载固定的cde。您可以在演示https://jsfiddle.net/OlegKi/rqab1veh/3/上验证您的代码在使用GitHub的最新免费jqGrid代码时没有问题。

我在jqGrid 4.6中没有看到您报告的问题的解决方法。我可以建议您升级到免费的jqGrid的最新代码,或者使用我之前描述的错误修复来自定义构建jqGrid 4.6。