gpt4 book ai didi

javascript - Ag 网格 - 如何对列进行排序以将所有空值显示为最后?

转载 作者:行者123 更新时间:2023-12-01 23:29:55 28 4
gpt4 key购买 nike

我想创建一个自定义比较器来对列进行 asc/desc 排序,但在这两种情况下,我都想将所有空 (null) 值保留在列表的末尾

我使用 valueGetter 返回正确的字符串值/null。

最佳答案

我认为你可以通过两种方式实现这一点

首先:对要使用自定义排序的列使用比较器

   columnDefs: [
{
field: 'columnName',
comparator: (a, b, nodeA, nodeB, isInverted) => {
if (a === b) {
return 0;
}
// for null
else if (a === 'null') {
return isInverted ?-1: 1;
}
else if (b === 'null') {
return isInverted ? 1: -1;
}
else {
return a.localeCompare(b);
}

}
}]

  1. a,b:要比较的单元格中的值。通常排序是仅对这些值完成。
  2. nodeA, nodeB:要排序的行的行节点。这些可以如果需要更多信息(例如来自其他列的数据),则使用需要进行比较。
  3. isInverted:升序为真,降序为假。

其次:使用postSort机制,排序完成后调用

     <GridOptions> {
postSort: this.postSort
}// add this to grid options

private postSort = function(rowNodes) {
// null value data will be sorted at the end

function checkNull(node) {
return node.data.Id === null ; // if id is column is the one we are chceking
}

function move(toIndex, fromIndex) {
rowNodes.splice(toIndex, 0, rowNodes.splice(fromIndex, 1)[0]);
}

var nextInsertPos = rowNodes.length; //last index

for (var i = 0; i < rowNodes.length; i++) {
if (rowNodes[i].data && checkNull(rowNodes[i])) {
move(nextInsertPos, i)
nextInsertPos++;
}
}
}

关于javascript - Ag 网格 - 如何对列进行排序以将所有空值显示为最后?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66456829/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com