jqGrid,搜索日期

jqGrid,搜索日期,jqgrid,Jqgrid,我的数据在服务器端,我编写了代码来执行所有的搜索/过滤/排序 我的jqGrid有一个filterToolbar和一个搜索按钮 不幸的是,当我搜索时,我为日期选择的值没有发送到请求中。然而,奇怪的是,当它是filterToolbar的选定日期时,它确实会发送它 为什么这里没有数据 {“groupOp”:“AND”,“rules”:[{“field”:“RunDate”,“op”:“le”,“data”:“}]} 这是我的网格代码 var loadFileInfoList = function (f

我的数据在服务器端,我编写了代码来执行所有的搜索/过滤/排序

我的jqGrid有一个filterToolbar和一个搜索按钮

不幸的是,当我搜索时,我为日期选择的值没有发送到请求中。然而,奇怪的是,当它是filterToolbar的选定日期时,它确实会发送它

为什么这里没有数据

{“groupOp”:“AND”,“rules”:[{“field”:“RunDate”,“op”:“le”,“data”:“}]}

这是我的网格代码

var loadFileInfoList = function (fileInfoList, pager) {
    fileInfoList.jqGrid({
        url: 'GetFiles',
        datatype: 'json',
        mtype: 'POST',
        colNames: ['Id', 'Name', 'Interface', 'Amount', 'Type', 'Created', 'Status'],
        colModel: [
                { jsonmap: 'Id', name: 'Id', formatter: 'integer', align: 'right', hidden: true },
                { jsonmap: 'Name', name: 'Name', align: 'right', hidden: true },
                { jsonmap: 'InterfaceName', name: 'InterfaceName', align: 'left', width: '100%', sorttype: 'text', frozen: true,
                    search: true,
                    searchoptions: {
                        sopt: ['cn']
                    }
                },
                { jsonmap: 'Amount', name: 'Amount', formatter: 'currency', align: 'right', width: '100%', sorttype: 'number',
                    search: true,
                    searchoptions: {
                        sopt: ['ge', 'le']
                    }
                },
                { jsonmap: 'Type', name: 'Type', align: 'right', width: '100%', sorttype: 'text',
                    search: true, stype: 'select',
                    searchoptions: {
                        value: getTypeFilterOptions(),
                        sopt: ['eq']
                    }
                },
                { jsonmap: 'RunDate', name: 'RunDate', formatter: 'date', align: 'right', width: '100%', sorttype: 'date',
                    search: true,
                    datefmt: 'dd/mm/yyyy',
                    searchrules: {
                        date: true
                    },
                    searchoptions: {
                        sopt: ['ge', 'le'],
                        dataInit: function (elem) {
                            $(elem).datepicker({
                                dateFormat: 'dd/mm/yy',
                                changeYear: true,
                                changeMonth: true,
                                showButtonPanel: true,
                                onSelect: function () {
                                    $(this).keydown();
                                }
                            });
                        }
                    }
                },
                { jsonmap: 'Status', name: 'Status', align: 'right', width: '100%', sorttype: 'text', formatter: formatStatus,
                    search: true, stype: 'select',
                    searchoptions: {
                        value: getStatusFilterOptions(),
                        sopt: ['eq']
                    }
                }
            ],
        autoencode: true,
        sortname: 'RunDate',
        sortorder: 'desc',
        pager: pager,
        rowNum: 5,
        viewrecords: true,
        height: '100%',
        autowidth: true,
        ignoreCase: true,
        jsonReader: {
            repeatitems: false,
            root: "rows"
        },
        altRows: true,
        altclass: 'jqGridAltRow',
        loadComplete: function () {
            $("tr.jqgrow:odd").addClass('jqGridAltRow');
        }
    });

    fileInfoList.jqGrid('navGrid', pager,
        { edit: false, add: false, del: false },
        {},
        {},
        {},
        { closeOnEscape: true, closeAfterSearch: true, multipleSearch: true, multipleGroup: false }
    );

    fileInfoList.jqGrid('filterToolbar', { searchOnEnter: false, enableClear: true, stringResult: true });
};

loadFileInfoList($('#jqgFileInfoList'), '#jqgPagerFileInfoList');

我想您可以通过更改datepicker的
onSelect
callback来解决这个问题。你可以改变

onSelect:function(){
$(this.keydown();
}

onSelect:function(){
$(this.trigger('change');
}

您还可以使用我发布的更复杂的构造或更简单的表单。

@CaffGeek:jqGrid使用
change
handler更新内部数据结构,这些数据结构稍后将发送到服务器(请参阅)。如果您使用
$(this).keydown()
最后一个控件中的更改可能会丢失,特别是如果您没有使用jqGrid的最后一个版本。