私は、このフィルタリングプラグインと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などのようにソートされます。
私はオンラインで見つかった数値ソート機能を持っていますが、数値はランダムな順序で並んでいます。
私は機能をソートする]をクリックし、私はスプレッドシートの並べ替えで動作するようにそれを適応させる必要がある、しかし私は、ソートを理解していないslickgridビルトインで動作するように設計されているため、問題があると考えていfunction NumericSorter(a, b) {
var x = a[sortcol], y = b[sortcol];
return sortdir * (x == y ? 0 : (x > y ? 1 : -1));
}
これを行うのに十分な機能です。
これは、これまでの私のコードです:
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");
}
});
どのように数値の並べ替えを達成することができますか?
並べ替えに関するすべての背景情報をありがとう、非常に感謝します。私は自分のコードを簡略化しました。文字列をソートするのにうまくいきますが、数字は整理できません。だから私は、問題は数字ではなく文字列だと仮定します。それは私が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