当有空字段时,不会发生 Ag 网格排序
Ag grid sorting not happening when there is a empty field
我有一个包含 10 列的 ag 网格 table,对于全局的所有列,我启用如下排序,
enableSorting= "true"
在 <ag-grid-angular
.
里面
我们的一个列有日期属性,它也包含很少的空值。对于普通列表,它按预期排序,但是当涉及到具有空值的列表时,它没有正确排序。
有什么方法可以将空值限制在列表的末尾?
您可以像这样将自定义比较器传递到日期列 -
{
field: 'date',
comparator: dateComparator,
},
并定义一个自定义比较器以在最后保留空值
function dateComparator(date1, date2, nodeA, nodeB, isInverted) {
if (date1 === null && date2 === null) {
return 0;
}
if (date1 === null) {
return isInverted ? 1 : -1;
}
if (date2 === null) {
return isInverted ? 1 : -1;
}
return date1 - date2;
}
如果您的日期作为日期传递给 ag-grid,这应该有效。如果日期作为字符串传递,您可以遵循此 example。
我终于找到了解决上述问题的方法。通过使用自定义比较器,这里是片段。
dateComparator(date1, date2) {
if(!date1){
date1 = '04/23/2300';
} else if(!date2){
date2 = '05/23/2300';
}
if (date1 === undefined || date1 === null || date1.length !== 10) {
return null;
}
else{
var yearNumber = date1.substring(6, 10);
var dayNumber = date1.substring(3, 5);
var monthNumber = date1.substring(0, 2);
var result = yearNumber * 10000 + monthNumber * 100 + dayNumber;
var date1Number = result;
}
if (date2 === undefined || date2 === null || date2.length !== 10) {
return null;
}
else{
var yearNumber2 = date2.substring(6, 10);
var dayNumber2 = date2.substring(3, 5);
var monthNumber2 = date2.substring(0, 2);
var result2 = yearNumber2 * 10000 + monthNumber2 * 100 + dayNumber2;
var date2Number = result2;
}
// var date1Number = this.monthToComparable(date1);
// var date2Number = this.monthToComparable(date2);
if (date1Number === null && date2Number === null) {
return null;
}
if (date1Number === null) {
return -1;
}
if (date2Number === null) {
return 1;
}
return Number(date1Number)- Number(date2Number);
}
我有一个包含 10 列的 ag 网格 table,对于全局的所有列,我启用如下排序,
enableSorting= "true"
在 <ag-grid-angular
.
我们的一个列有日期属性,它也包含很少的空值。对于普通列表,它按预期排序,但是当涉及到具有空值的列表时,它没有正确排序。
有什么方法可以将空值限制在列表的末尾?
您可以像这样将自定义比较器传递到日期列 -
{
field: 'date',
comparator: dateComparator,
},
并定义一个自定义比较器以在最后保留空值
function dateComparator(date1, date2, nodeA, nodeB, isInverted) {
if (date1 === null && date2 === null) {
return 0;
}
if (date1 === null) {
return isInverted ? 1 : -1;
}
if (date2 === null) {
return isInverted ? 1 : -1;
}
return date1 - date2;
}
如果您的日期作为日期传递给 ag-grid,这应该有效。如果日期作为字符串传递,您可以遵循此 example。
我终于找到了解决上述问题的方法。通过使用自定义比较器,这里是片段。
dateComparator(date1, date2) {
if(!date1){
date1 = '04/23/2300';
} else if(!date2){
date2 = '05/23/2300';
}
if (date1 === undefined || date1 === null || date1.length !== 10) {
return null;
}
else{
var yearNumber = date1.substring(6, 10);
var dayNumber = date1.substring(3, 5);
var monthNumber = date1.substring(0, 2);
var result = yearNumber * 10000 + monthNumber * 100 + dayNumber;
var date1Number = result;
}
if (date2 === undefined || date2 === null || date2.length !== 10) {
return null;
}
else{
var yearNumber2 = date2.substring(6, 10);
var dayNumber2 = date2.substring(3, 5);
var monthNumber2 = date2.substring(0, 2);
var result2 = yearNumber2 * 10000 + monthNumber2 * 100 + dayNumber2;
var date2Number = result2;
}
// var date1Number = this.monthToComparable(date1);
// var date2Number = this.monthToComparable(date2);
if (date1Number === null && date2Number === null) {
return null;
}
if (date1Number === null) {
return -1;
}
if (date2Number === null) {
return 1;
}
return Number(date1Number)- Number(date2Number);
}