我有一个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");
}
答案 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