jqGrid搜索中的日期范围

jqGrid搜索中的日期范围,jqgrid,Jqgrid,我们在最新版本的jqGrid中使用高级搜索,我们的搜索对话框配置为在网格上方的页面上始终可见。我们数据列表的结构是动态的。因此,当我们要显示一个列表时,我们首先执行一个ajax调用来获取网格的列列表。然后,我们为网格构建数据模型并请求数据 目前,在获取列的请求中,我们返回列的数据类型。如果数据是日期,我们将在搜索表单中显示日期选择器。然而,我们的一些客户讨厌在日期范围内使用=。他们希望能够选择一个日期列,然后使用两个并排的日期选择器设置开始和结束日期。我已经推了他们一段时间了,因为他们有能力进行

我们在最新版本的jqGrid中使用高级搜索,我们的搜索对话框配置为在网格上方的页面上始终可见。我们数据列表的结构是动态的。因此,当我们要显示一个列表时,我们首先执行一个ajax调用来获取网格的列列表。然后,我们为网格构建数据模型并请求数据

目前,在获取列的请求中,我们返回列的数据类型。如果数据是日期,我们将在搜索表单中显示日期选择器。然而,我们的一些客户讨厌在日期范围内使用=。他们希望能够选择一个日期列,然后使用两个并排的日期选择器设置开始和结束日期。我已经推了他们一段时间了,因为他们有能力进行日期范围搜索,但抱怨并没有停止。(添加第二个带有结束日期的过滤器需要更多的点击)

当我在日期列上配置搜索时,是否有任何方法可以修改jqGrid以提供日期范围控制?我真的不想为了处理这些投诉而设置外部搜索对话框UI,但产品管理部门正在努力获取网格的“正常”日期范围


据我所知,没有办法做到这一点,只能自己写


您可以创建自己的自定义搜索对话框。看看我几天前问的这个

使用
setGridParam
更改
postData
数组,并在
filters
JSON对象中包含额外的值,这些值将被带到服务器端,您可以在服务器端对其进行解析。在您的情况下,您可以在
postData
filter
项中传递数据范围
Start
End
。然后像这样重新加载jqGrid

    var $grid = $("#list');
    //$grid.setGridParam({datatype:'json', page:1}).trigger('reloadGrid');
    var post_data = {searchField:'',searchString:'', searchOper:'',
            filters:'{"groupOp":"OR","rules":['+
                    '{"field":"Date","op":"ge","data":"2012-04-23"},'+
                            '{"field":"Date","op":"lt","data":"2012-04-25"}' +
                            ']}'
    };
    $grid.setGridParam({postData:post_data}).trigger('reloadGrid');
上述操作将使用新配置保存
postData
数组,并且
reloadGrid
使用新的
postData
数组向服务器发送请求。这也将保留分页功能;但是,要获得网格的旧视图(不带搜索词),您还需要单独实现
重置
按钮,然后触发
重新加载网格
,以使其生效


不确定你现在是否已经解决了你的问题;然而,我将此解决方案放在这里,以供将来有相同问题的任何人使用。

我想知道,如果选择了日期列,是否可以挂接某种回调。然后,我可以为它们自动设置第二个过滤器。另外,如果我可以为搜索添加额外的“操作”,这样我就可以在用户界面中使用“From”和“To”,然后在服务器端翻译这些词来设置我的查询。选择搜索列时不会触发任何事件,添加搜索行时也不会触发任何事件。此处介绍了唯一可用的事件: