在Kendo Grid中的Date列上排序,不考虑AM / PM的角度

时间:2018-05-08 17:02:28

标签: angular typescript kendo-ui kendo-grid angular5

我的组件中有一个角度的Kendo网格,其中填充了基于预定义模型的数据。我正在排序日期'日期'字段(StartTime)。排序时,不会考虑AM / PM,如下面的屏幕截图所示。

Snippet of StartTime column as shown on UI

理想情况下,突出显示的日期应该是排序顺序中的第三个。

以下是相关的代码段:

型号:

export interface Summary {
...
StartTime: Date;
...
}

排序描述符:

public sort: SortDescriptor[] = [{
field: 'StartTime',
dir: 'asc' 
}];

加载网格时调用此语句:

this.gridData = orderBy(this.gridData, this.sort);

我在这里缺少什么?如何将网格排序考虑到AM / PM?

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:2)

网格数据项需要包含实际的JavaScript日期对象(而不是字符串表示),以便内置的网格格式化,排序和过滤功能可以按预期工作:

DOCS

如果数据是从远程服务序列化的,则需要对其进行映射,以便将所有日期字符串转换为实际日期,否则它们将按字符串排序。

以下是数据包含实际日期的示例,它们按预期排序:

EXAMPLE

{
        "ProductID": 1,
        "ProductName": "Chai",
        "SupplierID": 1,
        "CategoryID": 1,
        "QuantityPerUnit": "10 boxes x 20 bags",
        "UnitPrice": 18,
        "UnitsInStock": 39,
        "UnitsOnOrder": 0,
        "ReorderLevel": 10,
        "Discontinued": false,
        "Category": {
            "CategoryID": 1,
            "CategoryName": "Beverages",
            "Description": "Soft drinks, coffees, teas, beers, and ales"
        },
        "FirstOrderedOn": new Date(2018, 4, 2, 18, 46, 53)
    }

<kendo-grid-column field="FirstOrderedOn" title="First Ordered On"
      width="240" filter="date" 
      format="{0:MM/dd/yyyy hh:mm:ss a}">
    </kendo-grid-column>