sortCompareFunctionを使用する
AdvancedDataGrid コントロールは、この関数を使用して、データ プロバイダー コレクションの要素を並べ替えます。コールバック関数の関数シグネチャは 2 つのパラメーターを取り、次の形式をとります。
mySortCompareFunction(obj1:Object, obj2:Object):int
obj1 — 比較するデータ要素。
obj2 — obj1 と比較する別のデータ要素。
関数は、オブジェクトの比較に基づいて値を返す必要があります。
- obj1 が昇順で obj2 の前に表示される場合は -1。
- obj1 = obj2 の場合は 0。
- obj1 が obj2 の後に昇順で表示される場合は 1。
<mx:AdvancedDataGridColumn sortCompareFunction="mySort"
dataField="colData"/>
次の並べ替え比較関数を試してください。
public function mySort(obj1:Object, obj2:Object):int
{
var s1:String = obj1.colData;
var s2:String = obj2.colData;
var result:Number = s1.localeCompare(s2);
if(result != 0)
result = result > 0 ? 1 : -1;
if(s1.match(/^\d/))
{
if(s2.match(/^\d/))
return result;
else
return 1;
}
else if(s2.match(/^\d/))
return -1;
else
return result;
}
文字列の最初の文字をチェックし、数字で始まる文字を並べ替え順序で押し下げます。両方とも文字または数字で始まる場合、 localeCompareを使用して 2 つの文字列を比較します。したがって、abc
先行123
しますが、a12
それでも先行しabc
ます。
文字列内の位置に関係なく、文字が常に数字の前にあるまったく異なる並べ替えが必要な場合は、最初から作成する必要があります- String::charCodeAtは、開始するのに適した場所かもしれません。