【问题标题】:Kendo Grid Filter not working properly for date column剑道网格过滤器无法正常用于日期列
【发布时间】:2016-07-21 03:34:30
【问题描述】:

我采用了带有日期列的剑道网格。如下所示

@(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 上应用过滤器时,它无法正常工作。它不适用于等于条件。我不知道是什么问题。请帮忙。

【问题讨论】:

  • 您检查分钟和秒是否相同? (您只显示年、月和日,但在内部它也使用分、秒和秒的分数)
  • @OnaBai 反正我可以避免吗?
  • 使用 OrderDate 上方的 [DataType(DataType.Date)]
  • 如果没有其他可用选项,您可以定义您的自定义比较函数来丢弃分钟和秒。你想试试这个方法吗?
  • @HadiHassan 我无法设置数据注释。有没有其他办法?

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


【解决方案1】:

我认为您必须开发和检查您的属性,然后将其转换为 DateTime 并根据您的要求获取 Date 或 DateTime。

为了更清楚,请检查以下代码: 将另一列设为只读列,如下所示:

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

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

【讨论】:

    【解决方案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");
        });
    }))
    

    希望对你有帮助,我试过了,对我有用

    问候

    【讨论】:

      【解决方案3】:

      我一直在努力解决这个问题,直到我在 github 上找到了 Gist

      这里是article,了解如何解决这个问题。

      阅读 cmets,您会发现 Telerik 认为它按设计工作。不幸的是,它不适用于仅按日期过滤。向 Crowbar Solutions 致敬。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-08-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多