搜索数据为空

我正在使用jqGrid 4.6,但我在最新版本5.1.0上尝试了这个。 我对搜索选项有这样的定义:

loadComplete: function() { var keys = grid.getGridParam('colModel'); for (var i=1; i<keys.length; i++) { var cellname = keys[i].name; grid.setColProp(cellname, { searchoptions: { dataUrl: 'RData_io.php?action=filter&field=' + cellname, sopt: ['eq', 'ne', 'lt', 'gt', 'le', 'ge', 'cn', 'nc'], postData: grid.getGridParam('postData') } }); } } 

dataUrl给我正确的选择,并在一段时间后在dropdownbox中正确加载值。 我们得到这样的东西: 搜索窗口

看起来很好,但是,当我们点击“查找”按钮时,我们将这些参数发布到服务器:

 filters:"{"groupOp":"AND","rules":[{"field":"week1","op":"eq","data":null}]}" 

因此,正如您所看到的,“通过”,未发布到服务器。 尽管如此,如果我们改为“失败”,然后回到“通过” – 它工作正常。

奥列格 ,你能帮我吗?

谢谢Zakhar

更新 :如果您使用的不是Oleg的Free-jqGrid,而是一些旧版本,或<= 5.1.0。 您可以使用此技巧,与@Oleg提议的相同,但由于selectFilled不允许您使用选项,请使用此选项:

 selectFilled: function (options) { $('.input-elm').change(); }, 

我在演示中看到了问题。 这是jqGrid中的一个错误。 谢谢你的bug报告!

我明天会修复它,但是仍然可以使用免费jqGrid的附加function作为解决方法。 可以使用selectFilled回调, dataUrl成功加载select 之后触发change事件

 selectFilled: function (options) { $(options.elem).change(); } 

相应的searchoptions选项将如下所示

 searchoptions: { clearSearch: false, selectFilled: function (options) { $(options.elem).change(); }, dataUrl: '/echo/html/', sopt: ['eq', 'ne', 'lt', 'gt', 'le', 'ge', 'cn', 'nc'], postData: { html: "", delay: 0 } } 

可以validation固定演示使用过滤rules中的正确data : https : //jsfiddle.net/OlegKi/mxct4bdu/7/

更新:我修复了GitHub源代码的bug(参见提交 )。 现在没有使用selectFilled: function (options) { $(options.elem).change(); }的演示selectFilled: function (options) { $(options.elem).change(); } 正常工作。 见https://jsfiddle.net/OlegKi/mxct4bdu/8/