Kendo Grid自定义日期过滤器

时间:2018-06-26 12:55:53

标签: asp.net-mvc kendo-ui datepicker kendo-grid filtering

我已经看到了几个如何执行此操作的代码示例,但没有一个我正在寻找的格式。我试图自己进行转换,但没有成功。我想做的是创建一个自定义行过滤器,该过滤器将为您提供x量的可用于日期的选项。

columns.Bound(cc => cc.StartDate).Width(160)
   .HeaderHtmlAttributes(new { title = "startdate") })
   .Title("startdate"))
   .Filterable(ftb => ftb.Extra(false)
   .Operators(op => op.ForDate(d => d
   .IsEqualTo("At date")
   .IsLessThan("Before date")
   .IsGreaterThan("After date"))));

在上面的代码中,我试图使用过滤器选项,以便用户可以选择在特定日期之前,之后和之后过滤事件。如果能真正显示这些选项,则更好,如果用户可以使用剑道日期选择器,那就更好了。

所以我的问题是:我在做错什么,我没有看到正确的选项?如何将日期选择器放入过滤器?

1 个答案:

答案 0 :(得分:1)

您需要将列数据类型设置为datetime 。 如果您使用的是MVC,则在模型中,请在DatePicker属性上方添加DataType.Date,以防仅需要datepicker而不需要datetimepicker,如下所示:

[DataType(DataType.Date)]
public DateTime StartDate{ get; set; }

注意:如果未包含在标题中,请添加对System.ComponentModel.DataAnnotations的引用。

然后在filtrable中指定UI将是日期时间选择器

filterable: {
             ui: "datetimepicker"
            }

OR

columns.Bound(c => c.StartDate).ClientTemplate("#= kendo.toString(kendo.parseDate(StartDate), 'MM/dd/yyyy HH:mm:ss') #")
 .Filterable(ftb => ftb.Cell(cell => cell.Template("DateTimeFilter")));

这是您可以参考的示例代码。在此示例中,您可以参考“生日”列。

Demo - sample

就您而言,就像

columns.Bound(cc => cc.StartDate).Width(160)
   .HeaderHtmlAttributes(new { title = "startdate") })
   .Title("startdate"))
   .Filterable(ftb => ftb.Extra(false)
       .Cell(cell => cell.Template("DateTimeFilter"))
       .Operators(op => op.ForDate(d => d
       .IsEqualTo("At date")
       .IsLessThan("Before date")
       .IsGreaterThan("After date"))));

希望它对您有帮助。