jqGrid DatePicker过滤而不按Enter键

jqGrid DatePicker过滤而不按Enter键,jqgrid,Jqgrid,我正在构建我的第一个ASP.NET MVC 3应用程序并使用jqGrid。我的一个列“FlavorCreated”是一个日期列,我想使用DatePicker过滤该列上的网格。以下是当前发生的情况:用户单击列标题过滤器框,显示日期选择器,然后用户选择年、月并单击一天。选取者离开并在文本框中留下日期,例如2009年3月28日。为了让过滤器真正工作,我必须点击该框并点击回车键,这对用户来说有点烦人 有没有一种方法可以让用户在当天单击时自动启动过滤器 (顺便说一句,我不知道“完成”按钮的用途是什么,因为

我正在构建我的第一个ASP.NET MVC 3应用程序并使用jqGrid。我的一个列“FlavorCreated”是一个日期列,我想使用DatePicker过滤该列上的网格。以下是当前发生的情况:用户单击列标题过滤器框,显示日期选择器,然后用户选择年、月并单击一天。选取者离开并在文本框中留下日期,例如2009年3月28日。为了让过滤器真正工作,我必须点击该框并点击回车键,这对用户来说有点烦人

有没有一种方法可以让用户在当天单击时自动启动过滤器

(顺便说一句,我不知道“完成”按钮的用途是什么,因为每当我点击一天,选择器就会消失。也许这就是我缺少的设置。)

还有人需要这个功能并解决了它吗

我试着这样做:

dataInit: function (elem) {
  $(elem).datepicker({ changeYear: true, changeMonth: true, showButtonPanel: true,
    onSelect: function (dateText, inst) {
       $("#icecreamgrid")[0].trigger("reloadGrid");
    }
  })
}
正如我在一些网站上看到有人建议的那样,但这似乎不起作用

你可以试试看

dataInit:函数(elem){
$(元素).日期选择器({
变化年:是的,
变化月:对,
showButtonPanel:是的,
onSelect:function(){
if(this.id.substr(0,3)=“gs_u2;”){
//在搜索工具栏时
setTimeout(函数(){
myGrid[0]。triggerToolbar();
}, 50);
}否则{
//如果出现问题,请刷新过滤器
//搜索对话框
$(此).trigger(“更改”);
}
}    
});
}
更新:从版本4.3.3开始,jqGrid将网格的DOM初始化为
的dataInit
。因此,在上述代码中不需要使用
myGrid
变量。除此之外,您还可以使用:

dataInit:函数(elem){
var self=this;//保存对网格的引用
$(元素).日期选择器({
变化年:是的,
变化月:对,
showButtonPanel:是的,
onSelect:function(){
if(this.id.substr(0,3)=“gs_u2;”){
//在搜索工具栏时
setTimeout(函数(){
self.triggerToolbar();
}, 50);
}否则{
//如果出现问题,请刷新过滤器
//搜索对话框
$(此).trigger(“更改”);
}
}    
});
}
使用
dataInit
的第二个
选项
参数释放jqGrid调用,该参数包含附加信息,如
模式
属性。如果在过滤器工具栏内部调用,
模式
属性的值是
“过滤器”
(如果是搜索对话框,
“搜索”
)。因此,可以使用以下代码

dataInit:function(元素、选项){
var self=this;//保存对网格的引用
$(元素).日期选择器({
变化年:是的,
变化月:对,
showButtonPanel:是的,
onSelect:function(){
如果(options.mode==“过滤器”){
//在搜索工具栏时
setTimeout(函数(){
self.triggerToolbar();
}, 0);
}否则{
//如果出现问题,请刷新过滤器
//搜索对话框
$(此).trigger(“更改”);
}
}    
});
}

这在Oleg中非常有效。谢谢按Esc键会导致GET发生,但我可以接受这一点——我不会收回那么多数据。我可能可以调用在调用triggerToolbar()之前进行检查的func。您最好在
onSelect
的内部调用
triggerToolbar
,而不是在
onClose
的内部调用?您可以准确地描述在哪种情况下要强制工具栏搜索,在哪种情况下不强制工具栏搜索。通常,如果用户选择新日期,则会调用选择的
事件。@itsmart:欢迎您!我将代码从我的答案改为直接跟随其他答案,改为更好的方式。@itsmart:我对这个问题考虑了一些,并试着做了一个演示。现在,我认为在使用高级搜索和过滤器工具栏的情况下,
onSelect
的用法(如我在这里所述)并不是最好的。我会在周末更准确地检查这个问题,稍后会发布更多信息。@itsmart:我又修改了一次答案。现在它可以在两种搜索情况下工作。