Kendo ui 筛选剑道网格的格式化日期列

Kendo ui 筛选剑道网格的格式化日期列,kendo-ui,kendo-grid,kendo-asp.net-mvc,Kendo Ui,Kendo Grid,Kendo Asp.net Mvc,我的表格中有此DateTime列: column.Bound(c => c.PaymentMonth).ClientTemplate("#= PaymentMonthString #") .Filterable(filterable => filterable .Operators(op => op.ForDate(d => d.Clear().IsEqualTo("Equals"))) .Extra

我的表格中有此DateTime列:

column.Bound(c => c.PaymentMonth).ClientTemplate("#= PaymentMonthString #")
            .Filterable(filterable => filterable
            .Operators(op => op.ForDate(d => d.Clear().IsEqualTo("Equals")))
            .Extra(false).UI("dateFilter"));
PaymentMonthString是一个只读字符串属性,它以MMMM yyyy格式返回PaymentMonth

以下是自定义筛选器UI的dateFilter函数:

<script>
    function dateFilter(e) {
        e.kendoDatePicker({
            format: "MMMM yyyy",
            depth: "year",
            start: "year"
        });
    }
</script>

但是,过滤器永远不会工作,因为当您从“过滤器”菜单中选择日期时,默认情况下,当前日期用作日期的日期部分。例如,如果您选择2016年3月14日,则日期为2016年3月14日。但是,当我在MMMM-yyyy列上进行筛选时,我并不关心日期。应包括2016年3月的所有日期。我该如何让它工作呢?

我想出了如何让它工作的方法。在筛选器UI中的日期选择器的更改事件中,我们可以筛选网格数据源中大于或等于所选月份第一天且小于或等于该月份最后一天的所有日期。以下是dateFilter函数的更新代码:

<script>
    function dateFilter(e) {
        e.removeAttr("data-bind");
        e.kendoDatePicker({
            format: "MMMM yyyy",
            depth: "year",
            start: "year",
            change: function () {
                var ds = $("#grid").data().kendoGrid.dataSource;
                var filter = {
                    "logic": "and",
                    "filters": [
                      {
                          "field": "PaymentMonth",
                          "operator": "gte",
                          "value": new Date(this.value().getFullYear(), this.value().getMonth(), 0)
                      },
                      {
                          "field": "PaymentMonth",
                          "operator": "lte",
                          "value": new Date(this.value().getFullYear(), this.value().getMonth() + 1, 0)
                      }
                    ]
                };
                ds.filter(filter);
                this.element.closest("form").data().kendoPopup.close();
            }
        });
    }
</script>

您需要使用自定义过滤器来实现goal@thepirat000,不,没有。在这种情况下,年份将增加1,月份将变为1月份。