나는이 필터링 플러그인과 slickgrid 있습니다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");
}
});
나는 숫자 정렬을 달성 할 수있는 방법
?
정렬에 대한 모든 배경 정보를 제공해 주신 Ben에게 감사드립니다. 나는 당신에 따라 코드를 간소화했으며 문자열 정렬에 대해서는 잘 작동하지만 숫자는 그렇지 않습니다. 그래서 문제는 숫자가 아니라 문자열이라는 것입니다. 그것은 0, 1, 2 등을 제공하는'd [ "linenum"] = i + 1;'형식으로 데이터 뷰에 추가하기 때문에 이상합니다. – matt9292
이 코드로도 여전히 숫자가 텍스트로 정렬됩니다. 벤 한테 도움을 더 해줄 수있어? 'function comparer (a, b) { var x = a [sortcol], y = b [sortcol]; // 숫자 인 경우 if (! isNaN (parseFloat (x))) { x = parseFloat (x); } if (! isNaN (parseFloat (y))) { y = parseFloat (y); } return (x == y? 0 : (x> y? 1 : -1)); }' – matt9292