我正在构建我的第一个ASP.NET MVC 3应用程序并使用jqGrid。我的一个专栏“Flavor Created”是一个日期列,我想使用DatePicker过滤该列上的网格。以下是当前发生的情况:用户点击列标题过滤器框,显示日期选择器,然后用户选择年,月和每天点击。选择器消失,并在文本框中留下日期,比如说,03/28/2009。要实际让过滤器工作,我必须单击该框并按Enter键,这对用户来说有点烦人。
当用户点击当天时,有没有办法让过滤器自动触发?
(顺便说一句,我不确定'完成'按钮的用途是什么,因为每当我点击一天时,选择器就会消失。也许这是我缺少的设置。)
其他人是否需要此功能并解决了它?
我试着这样做:
dataInit: function (elem) {
$(elem).datepicker({ changeYear: true, changeMonth: true, showButtonPanel: true,
onSelect: function (dateText, inst) {
$("#icecreamgrid")[0].trigger("reloadGrid");
}
})
}
我在某个网站上看到有人建议,但这似乎不起作用。
答案 0 :(得分:16)
您可以尝试使用
dataInit: function (elem) {
$(elem).datepicker({
changeYear: true,
changeMonth: true,
showButtonPanel: true,
onSelect: function() {
if (this.id.substr(0, 3) === "gs_") {
// in case of searching toolbar
setTimeout(function(){
myGrid[0].triggerToolbar();
}, 50);
} else {
// refresh the filter in case of
// searching dialog
$(this).trigger("change");
}
}
});
}
更新:从版本4.3.3开始,jqGrid将网格的DOM初始化为this
的{{1}}。因此,不需要在上面的代码中使用dataInit
变量。而不是那个人可以使用:
myGrid
使用dataInit: function (elem) {
var self = this; // save the reference to the grid
$(elem).datepicker({
changeYear: true,
changeMonth: true,
showButtonPanel: true,
onSelect: function() {
if (this.id.substr(0, 3) === "gs_") {
// in case of searching toolbar
setTimeout(function () {
self.triggerToolbar();
}, 50);
} else {
// refresh the filter in case of
// searching dialog
$(this).trigger("change");
}
}
});
}
的第二个options
参数进行免费的jqGrid调用,该参数包含其他信息,例如dataInit
属性。在调用过滤器工具栏内部时mode
属性的值为mode
(如果是搜索对话框,则为"filter"
)。因此可以使用以下代码
"search"