【发布时间】:2018-03-01 00:53:34
【问题描述】:
我有一个带有这个过滤插件的 slickgrid:
https://github.com/danny-sg/slickgrid-spreadsheet-plugins/blob/master/ext.headerfilter.js
这有一个排序功能:
filterPlugin.onCommand.subscribe(function (e, args) {
dataView.fastSort(args.column.field, args.command === "sort-asc");
});
这非常适合文本过滤,但我的大部分数据都是数字的。当我过滤数字 1 到 1000 时,它会排序为 1、10、100 等。
我有一个在网上找到的数字排序函数,但它只是将数字随机排列。
function NumericSorter(a, b) {
var x = a[sortcol], y = b[sortcol];
return sortdir * (x == y ? 0 : (x > y ? 1 : -1));
}
我相信这个问题是因为它被设计为使用内置的 slickgrid 点击排序功能,所以我需要调整它以使用电子表格排序,但是我对排序功能的理解不够这个。
这是我目前的代码:
filterPlugin.onCommand.subscribe(function (e, args) {
dataView.fastSort(args.column.field, args.command === "sort-asc");
//MD added
if (args.column.field == "linenum") {
dataView.sort(NumericSorter, args.sortAsc);
// alert("numeric sort");
} else {
dataView.fastSort(args.column.field, args.command === "sort-asc");
// alert("text sort");
}
});
如何实现数字排序?
【问题讨论】: