You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ASP.NET MVC中jqGrid列过滤工具栏无法生效问题求助

jqGrid过滤工具栏失效问题排查(C# ASP.NET MVC)

我是jqGrid新手,在C# ASP.NET MVC项目中遇到列过滤问题——使用过滤工具栏(含搜索按钮)进行过滤时完全无效果。已尝试多种方案但均未解决,现附上视图层代码(控制器端有返回SQL数据的Get接口),恳请协助排查问题。

<div>
    <table id="grid"></table>
    <div id="pager"></div>
</div>

<link rel="stylesheet" type="text/css" href="https://cdnjs.cloudflare.com/ajax/libs/jqueryui/1.11.4/themes/redmond/jquery-ui.min.css">
<link rel="stylesheet" type="text/css" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.6.0/css/font-awesome.min.css">
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/jqueryui/1.11.4/jquery-ui.min.js"></script>
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/free-jqgrid/4.13.3/js/jquery.jqgrid.min.js"></script>
<link rel="stylesheet" type="text/css" href="https://cdnjs.cloudflare.com/ajax/libs/free-jqgrid/4.13.4/css/ui.jqgrid.min.css">
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/free-jqgrid/4.13.4/js/jquery.jqgrid.min.js"></script>

<script>
   $(function () {
   
       $grid = $("#grid"),
           initDatepicker = function (elem) {
               $(elem).datepicker({
                   dateFormat: "dd-M-yy",
                   autoSize: true,
                   changeYear: true,
                   changeMonth: true,
                   showButtonPanel: true,
                   showWeek: true
               });
           };

       $grid.jqGrid
           ({
               url: "/controller/jsonAction",
               datatype: 'json',
               mtype: 'Get',
   
               //table header name
               colNames: ['Id', 'colDate', 'colText', 'colText1', 'colText2', 'colText3', 'colText4', 'colChar', 'colChar1', 'colText5'],
               //colModel takes the data from controller and binds to grid
               colModel: [
                   {
                       key: true,
                       hidden: true,
                       name: 'ID',
                       editable: false
                   },
   
                   {
                       name: "col1DateType", sorttype: "date",
                       formatter: "date", formatoptions: { newformat: "d-M-Y" },
                       editoptions: { dataInit: initDatepicker },
                       searchoptions: { sopt: ["eq", "ne", "lt", "le", "gt", "ge"], dataInit: initDatepicker }
                   },
   
                   {
                       name: "col2TextType", width: 193, cellattr: function (rowId, tv, rawObject, cm, rdata) {
                           return 'style="white-space: normal;"';
                       }
                   },
   
                   {
                       name: "Col3Texttype", cellattr: function (rowId, tv, rawObject, cm, rdata) {
                           return 'style="white-space: normal;"';
                       }
                   },
   
                   {
                       name: "col4ComboTypeText", formatter: "select",
                       edittype: "select", editoptions: { value: "test:test;test1:test1;test2:test2", defaultValue: "IN" },
   
                       stype: "select", searchoptions: { sopt: ["eq", "ne"], value: ":[All];test:test;test1:test1;test2:test2" }
                   },
   
                   { name: "col5TypeText" },
   
                   { name: "col6TypeText" },
   
                   {
                       name: "col7ComboTypeChar", width: 100, formatter: "select",
                       edittype: "select", editoptions: { value: "L:L;M:M;H:H", defaultValue: "IN" },
                       stype: "select", searchoptions: { sopt: ["eq", "ne"], value: ":[All];L:L;M:M;H:H" }
                   },
   
                   {
                       name: "col8ComboTypeChar", width: 100, formatter: "select",
                       edittype: "select", editoptions: { value: "L:L;M:M;H:H", defaultValue: "IN" },
                       stype: "select", searchoptions: { sopt: ["eq", "ne"], value: ":[All];L:L;M:M;H:H" }
                   },
   
                   {
                       name: "col9ComboTypeText", formatter: "select",
                       edittype: "select", editoptions: { value: "test3:test3;test4:test4;test5:test5", defaultValue: "IN" },
                       stype: "select", searchoptions: { sopt: ["eq", "ne"], value: ":[All];test3:test3;test4:test4;test5:test5" }
                   }
               ],
               cmTemplate: { autoResizable: true },
               iconSet: "fontAwesome",
   
               pager: true,
               autoencode: true,
               sortname: "invdate",
               sortorder: "desc",
               search: true,
   
               shrinkToFit: false,
               multiPageSelection: true,
   
               pager: jQuery('#pager'),
               rowNum: 10,
               rowList: [10, 20, 30, 40],
               height: '100%',
               width: '100%',
               viewrecords: true,
               loadonce: false,
              
               emptyrecords: 'No records to display',
               jsonReader:
               {
                   root: "rows",
                   page: "page",
                   total: "total",
                   records: "records",
                   repeatitems: false,
                   Id: "0"
               },
               autowidth: true,
               multiselect: false,
             
               searching: {
                   searchOnEnter: true,
                   stringResult: true,
                   defaultSearch: "cn",
                   multipleSearch: true,
                   multipleGroup: true,
                   searchOnEnter: true,
                   closeOnEscape: true
               }
              
           }).navGrid('#pager', { edit: false, add: false, del: false, search: true }
   
           ).jqGrid("filterToolbar");
   
      
     
   });
   
   
</script>

排查要点

  • 重复引入jqGrid脚本:代码中同时加载了4.13.3和4.13.4版本的jqGrid,版本冲突会导致功能异常,需删除其中一个,建议保留4.13.4版本。
  • 服务端/客户端过滤模式不匹配:当前loadonce: false为服务端分页模式,过滤请求会发送到后端接口,需确认/controller/jsonAction接口是否能接收并处理jqGrid的过滤参数(如filters、searchField等),并在SQL查询中应用过滤逻辑;若要客户端过滤,需将loadonce设为true。
  • sortname参数错误:配置中sortname: "invdate",但colModel中无此列,会导致初始化异常影响过滤,需修改为colModel中存在的列名(如ID或col1DateType)。
  • pager重复配置:代码中同时设置了pager: true和pager: jQuery('#pager'),需删除其中一个,保留pager: '#pager'即可。
  • 搜索配置重复:searching选项中重复设置searchOnEnter: true,需删除重复项。
  • 字段名大小写不匹配:确认控制器返回的JSON字段名与colModel的name属性完全一致(如Col3Texttype的大小写是否和后端返回字段匹配),字段不匹配会导致过滤无法定位数据。

内容的提问来源于stack exchange,提问作者MrWella

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.02 05:35:42