Kendo UI グリッドでグループ化の順序を制御する方法はありますか? 他のすべてのグループの前に移動したいグループがありますが、Kendo UI グリッドはグループをアルファベット順に並べ替えているようです。グループ名にスペースを追加すると機能することはわかっていますが、それは非常にハックのようです。
ありがとうレオ
Kendo UI グリッドでグループ化の順序を制御する方法はありますか? 他のすべてのグループの前に移動したいグループがありますが、Kendo UI グリッドはグループをアルファベット順に並べ替えているようです。グループ名にスペースを追加すると機能することはわかっていますが、それは非常にハックのようです。
ありがとうレオ
Try AddDescending and AddAscending, see examples below
@(Html.Kendo().Chart<T>()
[... other code ...]
.DataSource(ds => ds
.Read(read => read.Action("action", "controller"))
.Group(g => g.AddDescending(model=> model.property)) // <-- subtle difference here!
)
[... other code ...]
)
Kendo のグループ化では、配列内のすべての要素が特定のフィールド (たとえば、fooBar
) で並べ替えられ、並べ替えられた要素が繰り返されます。一言で言えば、疑似コードで:
if (element[i].fooBar!= element[i-1].fooBar) {
StartNewGroup(element[i]);
} else {
AddToLastGroup(element[i]);
}
グループ化を行うにはソートされた配列が必要なため、ソートを変更するのは難しいです。内部groupBy()
関数をオーバーライドするコードを作成しました。これにより、グループ化された結果を好きなように並べ替えることができます。
function overrideKendoGroupBy() {
var origFunc = kendo.data.Query.prototype.groupBy;
kendo.data.Query.prototype.groupBy = function (descriptor) {
var q = origFunc.call(this, descriptor);
var data = SortYourData(q.data, descriptor.dir);
return new kendo.data.Query(data);
};
}
overrideKendoGroupBy()
ページがロードされた後、ある時点で呼び出します。ここで、 がグループ化の配列であり、isまたはであるSortYourData()
関数を実装するだけです。th グループに含まれる元のデータ ソースの要素を含む配列があります。q.data
descriptor.dir
"asc"
"desc"
q.data[n]
items
n
注: この解決策は、ページングを使用していない場合にのみ機能します。グループ化が適用される前にページが分割されるため、データが複数のページにまたがる場合、すべての賭けは無効になります。
グループ化がグリッドでサポートされていない場合のカスタムの並べ替え方向- グループ化がない場合、グループは列が並べ替えられるのと同じ方法で並べ替えられます (クライアントの並べ替えを使用する場合)。ソート方向は、JavaScript のデフォルトのソートと同じです。
データソースを定義した後にクエリを追加できますが、これはうまくいくようです
related.query({
sort: { field: "Sort", dir: "asc"},
group: { field: "CategoryName" },
pageSize: 50
});
関連する場所はデータソースの名前です