我正在使用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}]}"
因此,正如您所看到的,“Pass”不会发布到服务器。 Altough,如果我们改为“失败”,然后回到“通过” - 它工作正常。
你能帮帮我吗,Oleg?
谢谢你, Zakhar
UPDATE :如果您使用的不是Oleg的Free-jqGrid,而是一些旧版本,或者&lt; = 5.1.0。您可以使用此技巧,与@Oleg提议的相同,但由于selectFilled不允许您使用选项,请改用:
selectFilled: function (options) {
$('.input-elm').change();
},
答案 0 :(得分:1)
我在演示中看到了问题。这是jqGrid中的一个错误。谢谢你的错误报告!
我明天会修复它,但仍可以使用免费jqGrid的附加功能作为解决方法。从selectFilled
change
回调触发dataUrl
事件
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: "<select><option>Pass</option></select>",
delay: 0
}
}
可以验证固定演示在过滤器data
中使用正确的rules
:https://jsfiddle.net/OlegKi/mxct4bdu/7/
更新:我修复了GitHub源代码的错误(请参阅the commit)。现在没有selectFilled: function (options) { $(options.elem).change(); }
解决方法的演示正常工作。见https://jsfiddle.net/OlegKi/mxct4bdu/8/