Flex:データベース駆動型DataGrid:矢印が消える
-
11-07-2019 - |
質問
Flexでは、次のコードを使用してDataGridでの並べ替えを許可しています(データはページングされ、サーバー側で並べ替えられます)。
private function headerReleaseHandler(event:DataGridEvent):void { var column:DataGridColumn = DataGridColumn(event.currentTarget.columns[event.columnIndex]); if(this.count>0) { if(this.query.SortField == column.dataField) { this.query.SortAscending = !this.query.SortAscending; } else { this.query.SortField = column.dataField; this.query.SortAscending = true; } this.fill(); } event.preventDefault(); }
これは完全に機能しますが、並べ替えを示す矢印は表示されません。どうすればそれを達成できますか?
ありがとう! / Niels
解決
これがあなたが探しているものである場合、ここに例があります: http://blog.flexexamples.com/2008/02/28/displaying-the-sort-arrow-in-a-flex-datagrid-control-without-having-to-click- a-column /
データプロバイダーが使用するコレクションを更新する必要があるようです。
他のヒント
同じ問題が発生しましたが、見つかった唯一の解決策は、DataGridをオーバーライドして、カスタムグリッドを作成することでした。 クラスは次のとおりです。
public class DataGridCustomSort extends DataGrid
{
public function DataGridCustomSort()
{
super();
addEventListener(DataGridEvent.HEADER_RELEASE,
headerReleaseHandlerCustomSort,
false, EventPriority.DEFAULT_HANDLER);
}
public function headerReleaseHandlerCustomSort(event:DataGridEvent):void {
mx_internal::sortIndex = event.columnIndex;
if (mx_internal::sortDirection == null || mx_internal::sortDirection == "DESC")
mx_internal::sortDirection = "ASC";
else
mx_internal::sortDirection = "DESC";
placeSortArrow();
}
}
HEADER_RELEASEイベントを取得し、列のインデックスと方向の情報を設定するときに、placeSortArrow()メソッドを特に呼び出す必要があります。
上記のコードで" this"の機能this.query.SortFieldで混乱しているので、それはdatagridを参照します。「this」と「quote」は独自のカスタムオブジェクトであると想定しています。そして、なぜあなたはカウントをチェックしていますか。それは何カウントです。
よろしく -モハン
所属していません StackOverflow