【问题标题】:Kendo Grid custom filter on date剑道网格自定义过滤器日期
【发布时间】:2018-06-26 12:55:52
【问题描述】:

我已经看到了几个如何执行此操作的代码示例,但没有一个是我正在寻找的格式。我试图自己转换它们,但没有成功。我要做的是创建一个自定义行过滤器,它将为您提供可在日期使用的 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"))));

在上面的代码中,我尝试使用过滤器选项,以便用户可以选择在某个日期之前、之后和之后过滤事件。如果这些选项能够真正显示出来会很好,如果用户可以使用 kendo 日期选择器就更好了。

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

【问题讨论】:

  • StartDate 的数据类型是什么?是日期时间吗?
  • 它可以很容易地转换为 DateTime,但目前它是一个字符串,因为这似乎是将值更改为日期而不是 datetimeoffset 的最简单方法。

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


【解决方案1】:

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

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

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

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

filterable: {
             ui: "datetimepicker"
            }

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

希望对您有所帮助。

【讨论】:

  • 问题在于它是 HTML5/javascript 类型的代码,而我正在寻找如上面代码所示的 ASP.NET MVC 解决方案。
  • 您绑定到列的属性必须是日期时间类型,然后剑道网格将自动填充过滤部分中的日期时间选择器
  • 我已经尝试了一段时间来让它工作,但这需要我一段时间。无论如何,“CreatedDate”是指 StartDate 吗?我将如何编写模板?我对剑道还很陌生,很抱歉问了这么多。
  • @Bloddyeye 我已经修改了解决方案请看一下
  • 是的,到目前为止我理解了这个过程。问题是此代码将返回未定义的“DateTimeFilter”。这就是我的问题所在。抱歉,如果我不清楚。
猜你喜欢
  • 2023-03-19
  • 1970-01-01
  • 2014-07-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-05-18
相关资源
最近更新 更多