1

Flex では、次のコードを使用して DataGrid での並べ替えを許可しています (データはサーバー側でページングおよび並べ替えられます)。

        プライベート関数 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;
                }
                そうしないと
                {
                    this.query.SortField = column.dataField;
                    this.query.SortAscending = true;
                }
                this.fill();
            }

            event.preventDefault();
        }

これは、並べ替えを示す矢印が表示されないことを除いて、完全に機能します。どうすればそれを達成できますか?

ありがとう!/ニールス

4

3 に答える 3

5

これがあなたが探しているものである場合、ここに例があります: http://blog.flexexamples.com/2008/02/28/displaying-the-sort-arrow-in-a-flex-datagrid-control-without-列をクリックする必要がある/

データプロバイダーが使用するコレクションを更新する必要があるようです。

于 2008-12-23T00:23:04.203 に答える
1

私は同じ問題に遭遇しましたが、私が見つけた唯一の解決策は、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() メソッドを呼び出す必要があります。

于 2011-05-11T14:58:01.940 に答える
0

上記のコードで、「これ」が何を参照しているのかは、 this.query.SortField によって混乱しているため、データグリッドです.「これ」と「クエリ」は独自のカスタムオブジェクトであると想定しています.そして、なぜカウントをチェックするのですか.それは何カウントですか。

よろしく-モハン

于 2009-03-25T19:53:51.687 に答える