【问题标题】:jqGrid : searchrules in single Field searchingjqGrid:单字段搜索中的搜索规则
【发布时间】:2013-04-17 02:46:14
【问题描述】:

我正在尝试仅验证整数数据的搜索字段,但不幸的是我无法这样做。我已经尝试了所有可能的解决方案,例如 searchrules:{required:true,integer=true} 等。 但没有一个证明是富有成效的。 我基本上使用该字段启动搜索对话框并且没有输入任何数据,我点击了“查找”按钮。根据上述选项,我认为应该向用户显示一条验证消息,要求他在点击查找之前在字段中输入一个值。

[更新] - 代码片段

            var grid = $("#list");  
            grid.jqGrid({
             url:'/index.jsp',
             datatype: 'json',
             mtype: 'POST',
             colNames:['Name','Age', 'Address'],
             colModel :[ 
                  {name:'name', index:'name', width:55,search:true }, 
                  {name:'age', index:'age', 
                   width:90,editable:true,search:true, stype:'text',
                   searchrules:{required:true,integer:true}}, 
                  {name:'address', index:'address', width:80, 
                   align:'right', editable: true,search:false }
             ],
             pager: '#pager',
             jsonReader : {
                     root:"address",
                     page: "page",
                     total: "total",
                     records: "records",
                     repeatitems: false
             },
             rowNum:10,
             rowList:[10,20,30],
             sortname: 'name',
             sortorder: 'desc',
             viewrecords: true,
             gridview: true,
             autowidth: true,
             toppager: true,
             loadtext: "Loading records.....",
             caption: 'Test Grid',
             gridComplete: function(){ 

         }

          });

      **grid**.jqGrid('navGrid','#pager',
      {view:true,edit:true,add:true,del:true,refresh:true,
       refreshtext:'Refresh',addtext:'Add',
       edittext:'Edit',cloneToTop:true,
       edittitle: "Edit selected row"},
      {},{},{},
      {caption: "Search The Grid",Find: "Find Value",Reset: "Reset"},
      {});

[已更新]:无法使搜索规则在单一/高级搜索模式下正常工作。

[更新]:即使是“搜索中的验证” jqGrid Demo 不适用于搜索规则。

【问题讨论】:

  • 您应该在问题中发布您的代码
  • 这方面有什么帮助吗?我无法使 searchrules 正常工作于单一/高级搜索模式。任何帮助表示赞赏。谢谢!
  • 也许这个link会帮助你。
  • 谢谢懒鬼,我已经尝试过了。在上面的链接中,我们必须建立自己的自定义验证。但我只是想知道为什么 searchrules 的默认行为不起作用。即使link 中的“搜索验证”也不起作用。这是一个报告的错误吗?
  • @Faz:在我看来这是 jqGrid 中的一个错误。我稍后会给你我的答案(现在我很忙:-()

标签: jqgrid


【解决方案1】:

所描述问题的原因是 jqGrid 中的一个错误。 The line

ret = $.jgrid.checkValues(val, -1, null, colModelItem.searchrules, colModelItem.label);

将$.jgrid.checkValues的第三个参数初始化为null,但checkValues的最后一个版本的实现开始(见the line)与

var cm = g.p.colModel;

但是g 被初始化为null。产生错误的The last modification 是基于my suggestion,但我没有写这部分代码。

一个人可以用不同的方式解决问题。我建议将使用null 参数调用$.jgrid.checkValues 的行修改为以下

ret = $.jgrid.checkValues(val, -1, {p: {colModel: p.columns}}, colModelItem.searchrules, colModelItem.label);

另外,可以肯定的是,我建议修改one more line

if(!nm) { nm = g.p.colNames[valref]; }

到

if(!nm) { nm = g.p.colNames != null ? g.p.colNames[valref] : cm.label; }

jquery.jqGrid.src.js的固定版本可以得到here。稍后我将发布带有相同建议的错误报告 ti trirand。

【讨论】:

  • 谢谢奥列格。是否有可能获得 js 文件的缩小版本?我试图在线转换它,但徒劳无功。
  • @Faz:不客气!您可以使用Microsoft Ajax Minifier 例如:AjaxMinifier.exe -enc:in utf-8 -clobber:true jquery.jqGrid.src.js -o jquery.jqGrid.min.js
猜你喜欢
  • 2013-11-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-09-11
  • 1970-01-01
  • 1970-01-01
  • 2012-08-31
  • 1970-01-01
相关资源
最近更新 更多