Primeng <p-datatable>:排序包含'-'的数据

时间:2018-10-22 09:26:25

标签: angular sorting primeng primeng-datatable

我正在使用primeNg where date='2018-05-01' OR (date='2018-05-02' and TIME(time)<='03:00:00') <p-dataTable>字段实现自定义排序。

行号字段中的值如下:

"Row No:"

来源:https://primefaces.org/primeng/#/table/sort

要对我在以下代码中完成的数据进行排序:

HTML:

9864-3
4738-1
0935-4
2788-2

TS:

<p-dataTable  (onSort)="changeSort($event)">
        <p-column field="rowNo" header="Row No:" [sortable]="true">{{value}}</p-column>
</p-dataTable>

但这不是没有排序,没有出现任何错误,也没有对数据进行排序。请指导我如何对其中包含changeSort(event) { if (!event.order) { this.sortF = 'year'; } else { this.sortF = event.field; } } 的数据进行排序?

1 个答案:

答案 0 :(得分:0)

我试图制作一个非常基本的自定义排序功能,该功能可以根据您的规范进行排序

基本上,您可以对数字列表进行排序,例如arr.sort((a,b) => parseInt(a) - parseInt(b))。但是这里的问题是parseInt会扣除数字,因为9864-3将得出9861,然后扣除到下一个数字并给出结果。

无论如何,自定义功能是:

data = ["0935-4", "0935-4", "0935-2", "4738-1", "9864-3"];

customSort(data) {
 let arr = [];
 data.map(c => {
 let index = c.indexOf('-');
 let d = c.split('');
 d.splice(index, 1);
 arr.push(d.join(''))
 })
 arr.sort((a,b) => parseInt(a) - parseInt(b))// ascending
 // arr.sort((a,b) => parseInt(b) - parseInt(a)) descending
 let temp2 = [];
 arr.map(val => {
  temp2.push(val.slice(0, 4) + "-" + val.slice(4));
 })
  this.data = [...temp2];
  console.log(this.data)
}

希望这可能对您有所帮助或给您一些想法,使其成为您自己的