現在、dgrid(後で貼り付け)でカスタムソート機能を使用しています。それは大幅にソートを変更せず、ある特定の列を一意にソートし、大文字と小文字を区別しないようにソートします。他の列がソートされたときにソートに追加される "スケジュールされた"列のセカンダリソートを追加したいと思います。私はそれについてどうやって行くのか分かりません。私はソートをオーバーライドして2つの列でソートする方法を見てきましたが、カスタムソートが有効なときは表示されません。セカンダリソートは、他のどの列がクリックされても問題ありません。dgridセカンダリソートカラムを使用したカスタムソート
私はdojo 1.10とdgrid 1.0を実行しています。 RequestMemory DStoreからデータが来ています。私は実際には、店舗レベルではなく、グリッド上でこのような処理を行っています。どんな助けもありがとう。
currGrid.on('dgrid-sort', function (event) {
event.preventDefault();
var sort = event.sort[0];
currGrid.set('sort', function (a, b) {
if (sort.property == "thisField") {
//special sort for thisField
if (a[sort.property] !== 'undefined' && typeof a[sort.property] == "string") {
var colorA = a[sort.property].split("|");
var aValue = colorA[0].toLowerCase();
}
if (b[sort.property] !== 'undefined' && typeof b[sort.property] == "string") {
var colorB = b[sort.property].split("|");
var bValue = colorB[0].toLowerCase();
}
if (String(aValue) == String(bValue)) {
var result = 0;
} else if (dojo.string.trim(aValue) == "") {
var result = true ? 1 : -1;
} else if (dojo.string.trim(bValue) == "") {
var result = true ? -1 : 1;
} else {
var result = aValue > bValue ? 1 : -1;
}
return result * (sort.descending ? -1 : 1);
} else {
//Sort for all other fields same as always (except toLowerCase)
if (a[sort.property] !== 'undefined' && typeof a[sort.property] == "string") {
var aValue = a[sort.property].toLowerCase();
} else {
var aValue = "";
}
if (b[sort.property] !== 'undefined' && typeof b[sort.property] == "string") {
var bValue = b[sort.property].toLowerCase();
} else {
var bValue = "";
}
var result = aValue > bValue ? 1 : -1;
return result * (sort.descending ? -1 : 1);
}
});
currGrid.updateSortArrow(event.sort, true);
});
currGrid.startup();
@T Kambiを返すためにかどうかを確認するために必要な第二のセクション任意の列を並べ替えます。ただし、他の列が反対方向にソートされている場合は、スケジュールされた列の並べ替えが逆になります。私はスケジュールされた(セカンダリソート列)を常に昇順にしたい。 sortSet.push({property: "scheduled"、descending:false});にsortSet.push({property: "scheduled"});を変更しようとしました。それはそれをしなかった。私はおそらく私の元の質問でこれではっきりしていなかったが、もしあなたがそれをうまく手助けすることができれば、私は大いに感謝するだろう。 – BLWedge09
スケジュールソートは、そのオプションの降順プロパティを設定していないので、常に昇順です。ただし、他のソートオプションよりも優先順位が高くなります。 「スケジュール」を最優先にしたい場合は、まずスケジュールのソートを追加し、次にソートセットにもう1つのソートを追加します。 –
はい、あなたは完全に正しいです。私がクリックしていた列にはデータが隠されていたため、並べ替えが計画通り進まなかった。すべてが今のように機能します。ありがとう@Tカンビ – BLWedge09