Kendo UI网格 – filter – 日期范围

按日期范围过滤列可以很好地解决我在SO中找到的解决方案
如何定义两个日期之间的Kendo网格列filter? – 由MWinstead提议


此解决方案的唯一问题是,如果您只选择结束日期并应用filter,则下次打开filter菜单时,开始日期将填入您输入的结束日期,并且将选择LTE运营商,这将由jQuery代码更改,导致错误的filter

ataravati在同一个post中提出的问题

我们如何解决这个问题?

解决方案是为Begin Date提供null值,即使用户没有选择它也是如此。
但是,我们必须控制提交按钮 ……

 function grid_filterMenuInit(e) { var currentFieldName = e.field; if(currentFieldName === "yourFieldDate") { console.info("ignoring this field: <" + currentFieldName + ">"); return; } console.info("performing this field: <" + currentFieldName + ">"); var filterSubmit = e.container.find("[type=submit]:eq(0)"); $(filterSubmit).click(function() { var searchDateAfter = e.container.find("input:eq(0)"); var searchDateAfter1 = $(searchDateAfter).val(); var searchDateBefore = e.container.find("input:eq(1)"); var searchDateBefore1 = $(searchDateBefore).val(); var gridDatasource = $("#yourGridId").data("kendoGrid").dataSource; var jsDateBefore = null; var jsDateAfter = null; // we must convert kendoDateTime to JavaScript DateTime object // in my case the date time format is : yyyy/MM/dd HH:mm:ss if (typeof searchDateBefore1 !== 'undefined') { jsDateBefore = newJsDate(searchDateBefore1); } if (typeof searchDateAfter1 !== 'undefined') { jsDateAfter = newJsDate(searchDateAfter1); } var previousFilter = gridDatasource.filter(); var previousFilters = new Array(); var newFilters = new Array(); // storing the previous filters ... if (typeof previousFilter === 'object' && previousFilter.hasOwnProperty("filters")) { previousFilters = previousFilter.filters; for (var i=0 ; i