Kendo Grid Filter对日期列无法正常工作

时间:2014-07-29 09:42:04

标签: c# asp.net-mvc kendo-ui kendo-grid

我使用了日期栏的Kendo Grid。如下所示

@(Html.Kendo().Grid<RxConnectEntities.OrderDTO>(Model).Name("OrderList")
.Columns(columns =>
{
    columns.Bound(p => p.OrderID).Visible(false);
    columns.Bound(p => p.Drug).Width(60);
    columns.Bound(p => p.Quantity).Title("Quantity (gm)").Width(80);
    columns.Bound(p => p.OrderedDate).Format("{0:MM/dd/yyyy}").Title("Ordered On").Width(80);
})
.Scrollable(s=>s.Height("100%"))
.Sortable()
.Groupable()
.Filterable(f => f.Extra(false).Operators(o => o.ForString(str => str.Clear().StartsWith("Starts with").Contains("Contains")).ForDate(c=>c.IsGreaterThan("Is after").IsGreaterThanOrEqualTo("Is after or equal to").IsLessThan("Is before than").IsLessThanOrEqualTo("Is before or equal to"))))
.Pageable(p => p.PageSizes(new int[]{10,20,25,30,35}).Enabled(true).Refresh(true))
.DataSource(dataSource => dataSource
.Ajax().ServerOperation(false).PageSize(25)
.Model(m => m.Id(p => p.OrderID))
))

现在,当我在OrderedDate上应用过滤器时,它无法正常工作。它不等于条件。我不知道是什么问题。请帮忙。

3 个答案:

答案 0 :(得分:6)

我认为您必须开发并检查您的属性,然后将其转换为DateTime,并根据您的要求,您应该获取日期或日期时间。

为了更加清晰,请查看以下代码: 将另一列作为readonly列,如下所示:

[DataType(DataType.Date)]
public DateTime? UpdatedOrderedDateReadOnly 
{ 
    get
    {
        if (OrderedDate != null)
        {
            return (Convert.ToDateTime(OrderedDate).Date);
        }
        return null;
    }
}

然后在此只读列上应用过滤器。这将解决您的问题。

答案 1 :(得分:2)

尝试以下

.Filterable(f => f.Extra(false).Operators(o =>
{
    o.ForDate(t =>
    {
        t.Clear();
        t.IsEqualTo("Equal To");
        t.IsGreaterThan("Greater Than");
        t.IsGreaterThanOrEqualTo("Greater Than Or Equal");
        t.IsLessThan("Less Than");
        t.IsLessThan("Less Than Or Equal");
    });
}))

希望这会对你有所帮助,我尝试过它并与我合作

问候

答案 2 :(得分:0)

我一直在努力,直到我在github上找到了Gist

以下是关于如何解决这个问题的article

阅读评论,您将看到Telerik认为它按设计工作。不幸的是,它不适用于仅按日期过滤。向Crowbar Solutions致敬。