Javascript 搜索数据为空

Javascript 搜索数据为空,javascript,jquery,jqgrid,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, {

我正在使用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')
            }
        });
    }       
}
所以,正如您所看到的,“Pass”并没有发布到服务器。尽管如此,如果我们改为“失败”,然后再改回“通过”,它工作得很好

你能帮我吗

谢谢,, 扎哈尔


更新:如果您使用的不是Oleg提供的免费jqGrid,而是一些旧版本,或者我在演示中看到了问题。这是jqGrid中的一个bug。谢谢你的错误报告

我明天会修复它,但仍然可以使用免费jqGrid的附加功能作为解决方案。您可以使用
selectFilled
回调,从
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
    }
}
搜索选项:{
clearSearch:错,
选择填充:功能(选项){
$(options.elem).change();
},
dataUrl:“/echo/html/”,
标准作业程序:['eq','ne','lt','gt','le','ge','cn','nc'],
postData:{
html:“通行证”,
延迟:0
}
}
可以验证固定演示是否在筛选器
规则中使用了正确的
数据


我修好了程序错误(参见)。现在,没有使用
selectFilled:function(options){$(options.elem).change();}
的变通方法的演示可以正常工作。请参见

我建议您尝试使用4.13.2-它是jqGrid的分支,我在与4.6相同的许可证下免费开发和提供它。例如,您可以使用CDN提供的免费jqGrid(请参阅)。如果您也会遇到同样的问题,那么请创建演示,它使用
jquery.jqgrid.src.js
而不是
jquery.jqgrid.min.js
。我会调试并帮助你。你好,奥列格。谢谢你的回复,我已经考虑过了。我明天会试试,并把结果写给你!好啊直到明天…@Oleg,我几乎已经做了一个演示。但我一直在模拟对dataUrl的ajax请求。是否有一种方法可以使用POST方法发送它们,以使用jsfiddle/echo/html/?请参见,我在4.8.0版的免费jqGrid中引入了回调
selectFilled
。我检查了Guriddo jqGrid JS的相应源代码,发现Tony只添加了jQuery UI事件
jqGridAddEditAfterSelectUrlComplete
(请参阅),可以使用它,但不存在
selectFilled
回调。谢谢,@Oleg!奇怪的是,没有其他人发现这个错误!但是,很高兴听到这个消息,现在我们设法使jqGrid变得更好了:)我还看到,如果您再次打开搜索对话框,出于某种原因,对于您的jqGrid版本,select并没有被填充。少了点什么?@freeek:你到底是什么意思?您使用了哪个演示(或者您的代码使用了HTTP GET而不是HTTP PUT?)如果您使用HTTP GET,请验证您在来自
dataUrl
的响应中使用的HTTP头(缓存)。你需要什么样的行为(每次缓存或重新加载
dataUrl
响应)?是的,我用了这个小提琴,但它;现在正在工作,抱歉:)可能是我的内部(或JSFIDLLES)问题!另外,如果你在这里发布一个链接,如何每次重新加载过滤器,我也会考虑这样做。@freeek:我不知道你的意思。你是说什么样的过滤器重新加载?jqGrid和免费jqGrid的旧版本可以使用搜索对话框的
recreateFilter:true
选项,但从版本4.13.0开始的免费jqGrid中不再使用这些选项-将始终使用该选项。
selectFilled: function (options) {
    $(options.elem).change();
}
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
    }
}