我在jqGrid下面有过滤器工具栏。过滤正在运行。但是当我在名字搜索列中键入“N”时,它列出了其中没有“N”的记录。这将在下面的屏幕截图中显示。我们如何解决这个问题?
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>
答案 0 :(得分:1)
您描述了jqGrid 4.6中的错误。
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。