Asp.net mvc 剑道格网自定义过滤器启用日期

Asp.net mvc 剑道格网自定义过滤器启用日期,asp.net-mvc,kendo-ui,datepicker,kendo-grid,filtering,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 =>

我已经看到了一些代码示例,说明了如何做到这一点,但没有一个是我所寻找的格式。我试图自己改变他们,但没有成功。我试图做的是创建一个自定义行过滤器,它将为您提供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"))));
在上面的代码中,我尝试使用过滤器选项,以便用户可以选择在某个日期之前、当天和之后过滤事件。如果这些选项真的能显示出来就好了,如果用户能使用剑道日期选择器就更好了


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

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

[DataType(DataType.Date)]
public DateTime StartDate{ get; set; }
注意:如果System.ComponentModel.DataAnnotations未包含在标题中,请添加对其的引用

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

filterable: {
             ui: "datetimepicker"
            }

这是一个您可以参考的示例代码。在这个smple中有一列您可以参考的生日

你的情况是

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"))));

希望对你有帮助

StartDate的数据类型是什么?是DateTime吗?很容易转换成DateTime,但目前它是一个字符串,因为这似乎是将值更改为日期而不是datetimeoffset的最简单方法。问题是,这是一个HTML5/javascript类型的代码,而我正在寻找ASP.NET MVC解决方案,如上面的代码所示。绑定到列的属性必须是date-time类型,然后剑道网格将自动填充过滤器部分的datetime选择器。我已经尝试了一段时间来实现这一点,但这需要一段时间。你说的“CreatedDate”是指开始日期吗?我该如何编写模板呢?我是剑道新手,很抱歉问了这么多。@Bloddyeye我已经修改了解决方案请看一看是的,到目前为止我理解了这个过程。问题是此代码将返回未定义的“DateTimeFilter”。这就是我要问的问题。对不起,如果我不清楚的话。
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"))));