2017-01-27 122 views
1

我有以下帶有過濾器工具欄的jqGrid。過濾正在工作。但是當我在第一個名字搜索列中輸入「N」時,它會列出沒有「N」的記錄。這在下面的屏幕截圖中顯示。我們如何解決這個問題?jqGrid過濾器工具欄顯示沒有搜索鍵的記錄

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

你在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。

相關問題