よく利用するイベントなのに、よく忘れるのでメモメモ。
このやり方は、ASPxGridViewだけではなく、GridControlでもDXGridでも要領は同じです。
グリッドにて、グルーピングを行った場合、デフォルトではグルーピングした列でソートされます。
通常は、これで大抵よいのですが、場合によっては
グルーピングはA列で行うけど、データの並びはB列の昇順でソートしてほしい。
という場合があります。
このような場合は、カスタムソートイベントを利用してソート処理を実装します。
ASPxGridViewの場合は、CustomColumnSortイベントをハンドルすることで
処理が行えます。
で、一つだけ前提条件がありまして、このイベントを利用する場合
予め列のソート設定(SortMode)をCustomと指定しておく必要があります。
以下のようにします。
<dx:GridViewDataTextColumn Caption="グルーピング対象列" FieldName="ColA" VisibleIndex="0"> <Settings SortMode="Custom"/> </dx:GridViewDateTextColumn>
後は、イベントハンドラを記述するだけです。
以下サンプルです。
protected void grdMain_CustomColumnSort(object sender, CustomColumnSortEventArgs e) { if (e.Column == null || e.Column.FieldName != "ColA") { return; } e.Result = Comparer.Default.Compare(e.GetRow1Value("ColB"), e.GetRow2Value("ColB")); e.Handled = true; }
これで、ColAをグルーピングした時に、ソートはColBで行われることになります。
以下、参考情報です。
このKBには、ほかにもいろいろなやり方が記述されているので参考になります。
- ASPxGridView - How to sort groups
================================
過去の記事については、以下のページからご参照下さい。
- いろいろ備忘録日記まとめ