我有一张名为Job的表:
name nvarchar(50)
id int
description nvarchar(50)
enabled bit
date_modified datetime
user nvarchar(50)
具体课程:
public class Job {
public int Id { get; set; }
public string Name { get; set; }
public string Description { get; set; }
public bool Enabled { get; set; }
public DateTime DateModified { get; set; }
public string User { get; set; }
}
我在我的应用程序上使用angular和typescript,我在尝试显示数据时遇到以下问题:
我使用角度类型网格的ui网格,我有以下列defs:
columnDefs: [
{
field: 'id',
defaultFilter: FilterOperator.EQU,
sort: {
direction: this.uiGridConstants.DESC,
priority: 0,
},
type: 'number'
},
{ field: 'name', defaultFilter: FilterOperator.LIKE, sort: null },
{ field: 'description', defaultFilter: FilterOperator.LIKE, sort: null },
{ field: 'enabled', filter: { type: 'select', selectOptions: [{ value: true, label: 'True' }, { value: false, label: 'False' }] } },
{ field: 'user', defaultFilter: FilterOperator.LIKE, sort: null },
{ field: 'date_modified', type: 'date', enableFiltering: false, sort: null, cellTemplate: '<div>{{row.entity.dateModified | date:\'dd/MM/yyyy hh:mm:ss\'}}</div>' },
{ field: 'action', enableFiltering: false, enableSorting: false, sort: null, cellTemplate: `${this.baseUrl}app/automaticAction/listActionsTemplate.html` }
]
我的问题是,为了对日期修改列进行排序,我需要将字段属性值作为数据库列(date_modified),但为了显示数据,我需要使用类属性(dateModified)。有没有办法扩展列defs或东西来指定我想要排序的列? 我目前正在使用celltemplate的解决方法,但我不喜欢它。
答案 0 :(得分:1)
是的,您可以在columnDef ...
中指定sortingAlgorithm属性{ field: 'DateModified', type: 'date', enableFiltering: false, sort: null, cellTemplate: '<div>{{row.entity.DateModified | date:\'dd/MM/yyyy hh:mm:ss\'}}</div>', sortingAlgorithm: SomeCommonServiceOfYours.getDateSortingAlgorithm() },
然后在服务(或您的范围)中指定算法,如此
getDateSortingAlgorithm: function () {
return function (aDate, bDate) {
var dateDisplayFormat = 'dd/MM/yyyy hh:mm:ss';
var aMoment = moment(aDate, dateDisplayFormat);
var bMoment = moment(bDate, dateDisplayFormat);
if (aMoment.isBefore(bMoment)) {
return -1;
} else if (bMoment.isBefore(aMoment)) {
return 1;
} else {
return 0;
}
}
},
这假设您正在使用时刻,一个非常好的包用于所有日期和时间处理,但如果没有,您可以根据需要调整该算法。