搜索数据为空

时间:2016-04-21 17:03:39

标签: javascript jquery jqgrid

我正在使用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中正确加载了值。 我们得到这样的东西: Search window

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

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();
},

1 个答案:

答案 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中使用正确的ruleshttps://jsfiddle.net/OlegKi/mxct4bdu/7/

更新:我修复了GitHub源代码的错误(请参阅the commit)。现在没有selectFilled: function (options) { $(options.elem).change(); }解决方法的演示正常工作。见https://jsfiddle.net/OlegKi/mxct4bdu/8/