1

Flex 3 で動的データグリッドを作成しようとしています。列のリストと、URL から取得した列のデータポイントに対応するオブジェクトのリストがあります。グリッドは問題なく動作しますが、問題は列のソートが字句順に行われることです。

これは、列に sortcomparefunction を追加することで修正できることを認識していますが、この場合は簡単ではありません。私はやってみました

            var dgc:DataGridColumn = new DataGridColumn(dtf);
            f1[dtf] = function(obj1:Object, obj2:Object):int {
               return Comparators.sortNumeric(obj1[dtf],obj2[dtf]);
            };
            dgc.sortCompareFunction = f1[dtf];`

しかし、問題は、ここで作成している関数オブジェクトが (列を追加しているため) 反復ごとに上書きされ、最終的にすべての列で、最後に追加された列でのみ並べ替えが行われることです。

提案してください。

4

1 に答える 1

2

データグリッド列を作成するいくつかのオブジェクトの dynamicColumns 配列があると仮定しましょう。

var columns:Array = new Array();    
for (var i:int = 0; i < dynamicColumns.length; i++) {
    var column:DataGridColumn = new DataGridColumn(dynamicColumns[i].label);

    var dataGridColumnSortingHelper:DataGridColumnSortingHelper = new DataGridColumnSortingHelper(column);
    column.sortCompareFunction = dataGridColumnSortingHelper.columnSortCompareFunction;
    columns.push(column);
}
yourDataGrid.columns = columns;

DataGridColumnSortingHelper は次のようになります。

public class DataGridColumnSortingHelper
{
    private var column:DataGridColumn;

    // Constructor
    public function DataGridColumnSortingHelper(column:DataGridColumn)
    {
        this.column = column;
    }

    // Public Methods
    public function columnSortCompareFunction(item1:Object, item2:Object):int
    {
        // define your custom function here and use column field to know what column you sorting by...

        return 0;
    }
}

トムさん、コメントありがとうございます。

于 2010-10-19T12:06:49.260 に答える