jqgrid - jqGrid DatePicker过滤而不点击Enter键

标签 jqgrid

我正在构建我的第一个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");
    }
  })
}

正如我在某个网站上看到某人的建议一样,但这似乎不起作用。

最佳答案

您可以尝试

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将grid的DOM初始化为thisdataInit。因此,不需要在上面的代码中使用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的第二个dataInit参数进行免费的jqGrid调用,该参数包含其他信息,例如mode属性。在过滤器工具栏内部调用时,mode属性的值为"filter"(在搜索对话框中,则为"search")。因此,可以使用以下代码

dataInit: function (elem, options) {
    var self = this; // save the reference to the grid
    $(elem).datepicker({
        changeYear: true,
        changeMonth: true,
        showButtonPanel: true,
        onSelect: function() {
            if (options.mode === "filter") {
                // in case of searching toolbar
                setTimeout(function () {
                    self.triggerToolbar();
                }, 0);
            } else {
                // refresh the filter in case of
                // searching dialog
                $(this).trigger("change");
            }
        }    
    });
}

关于jqgrid - jqGrid DatePicker过滤而不点击Enter键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6876403/

相关文章:

jquery - 内联删除 - delOptions - 如何向 Restful 帖子添加附加数据?

jquery - 如何将数据从 JQGrid 发送到查询以删除行?

javascript - 内联行编辑的 onSuccess 事件未触发

jquery - jqgrid不传递记录id进行编辑删除

javascript - jQuery jqGrid 中的事件之前排序

javascript - jqGrid 排序或搜索不适用于具有 json 点表示法的列

javascript - 如果方法 selarrrow 返回具有超过 1 个索引的数组,如何删除 jqgrid 中的多行?

javascript - 如何允许转到免费 jqgrid 寻呼机中的指定页面

jqGrid:发送编辑数据

javascript - 如何在jQgrid中实现搜索以便用户可以通过<,>或<=,>=进行过滤?