質問

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」は独自のカスタムオブジェクトであると想定しています。そして、なぜあなたはカウントをチェックしていますか。それは何カウントです。

よろしく -モハン

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top