dateRangePicker在jqGrid上无法正常工作

时间:2014-05-27 08:54:23

标签: jquery jqgrid daterangepicker

我有一个jqgrid,其中一列说'UpdateTime'。我正在应用过滤器并使用下面的代码完美地获取一个DateRangePicker弹出窗口。

{name:'updateTime',index:'updateTime',width:90,hidden:false,search:true,align:'center',stype:"text", 
    searchoptions:{dataInit:function(el){
        $(el).daterangepicker({ 
        dateFormat:'mm/dd/yy', 
        beforeShow: function(input, inst) {
            $.datepicker._pos = $.datepicker._findPos(input); 
            $.datepicker._pos[0] = center; 
            $.datepicker._pos[1] = center; 
        }, 
       onClose: function(event) {
         jQuery("#myGrid").trigger("reloadGrid");
       }                                                 
     });
    } 
   }
  },

我有

$("#myGrid").jqGrid('filterToolbar', {autoSearch:true,searchOnEnter:true});

问题是,在选择日期时,过滤器的文本框会填充值,但控件不会出现在我的java代码中。相反,我必须再次选择过滤器文本框并按Enter键。从下一次开始,在daterangepicker弹出窗口中选择日期时,控件会出现在我的java代码中,但不会出现最新的值。要获得最新的价值,我必须每次都进入输入。

那么,有没有办法在选择日期时调用我的控制器,或者我可以在选择日期后自动聚焦我的过滤器文本框,这样我每次都会按Enter键。点击进入我很好。

我也试过以下代码

onSelect: function (dateText, inst) {
    $("#myGrid")[0].trigger("reloadGrid");
}

1 个答案:

答案 0 :(得分:0)

我现在必须解决这个问题,我发现了这个问题:

daterangepicker中没有onSelect,onClose事件处理程序。并且您必须在重新加载之前手动更新jqGrid过滤器。我的解决方案对我有用(evet,如果看起来像黑客)是这个。

    grid = jQuery("<table>").attr('id', myId+"_grid");
    var datePick = function(elem)
    {
       jQuery(elem).daterangepicker({
           dateFormat:"MM/DD/YYYY"
       });
       jQuery(elem).on('apply.daterangepicker', function(ev, picker) {
            var d = picker.startDate.format('MM/DD/YYYY') + ' - ' + picker.endDate.format('MM/DD/YYYY');
            var f = {groupOp:"AND",rules:[]};
            f.rules.push({field:"time_submit",op:"eq",data:d});
            grid[0].p.search = true;
            jQuery.extend(grid[0].p.postData,{filters:JSON.stringify(f)});
            grid.trigger("reloadGrid",[{page:1,current:true}]);
        });
    }

注意:字段stype是'text',您必须以“MM / DD / YYYY - MM / DD / YYYY”格式解析输入字符串 资料来源:Events of daterangepicker