2

BackGround:高度なデータグリッドがあります。このADGのデータプロバイダーはArrayCollectionです。このACのIDフィールドにグループ化コレクションがあります。

このAC内のいくつかの項目の例では、AC変数名は「arcTemplates」です。

(mx.collections::ArrayCollection)#0
  filterFunction = (null)
  length = 69
  list = (mx.collections::ArrayList)#1
    length = 69
    source = (Array)#2
      [0] (Object)#3
        abbreviation = "sore-throat"
        insertDate = "11/16/2009"
        name = "sore throat"
        templateID = 234
        templateType = "New Problem"
        templateTypeID = 1
     [32] (Object)#35
        abbreviation = 123
        insertDate = "03/08/2010"
        name = 123
        templateID = 297
        templateType = "New Problem"
        templateTypeID = 1
     [55] (Object)#58
        abbreviation = 1234
        insertDate = "11/16/2009"
        name = 1234
        templateID = 227
        templateType = "Exam"
        templateTypeID = 5
     [56] (Object)#59
        abbreviation = "breast only"
        insertDate = "03/15/2005"
        name = "breast exam"
        templateID = 195
        templateType = "Exam"
        templateTypeID = 5

グループ化につながるFlexコードの例:

<mx:AdvancedDataGrid displayItemsExpanded="true" id="gridTemplates">
  <mx:dataProvider>
    <mx:GroupingCollection id="gc" source="{arcTemplates}">
      <mx:Grouping >
        <mx:GroupingField name="templateTypeID" compareFunction="gcSort">

GCソート機能:

public function gcSort(a:Object, b:Object):int{
    return ObjectUtil.stringCompare(String(a.templateTypeID + a.name).toLowerCase(), 
                                    String(b.templateTypeID + b.name).toLowerCase());
}

問題:私のACの例では、いくつかのアイテムがあります。アイテム0、32、および56は、templateTypeIDに適切にソートおよびグループ化されますが、アイテム55は奇妙なことをします。文字列「5」ではなく、数値5でソート/グループ化されているようです。見知らぬ人になります。nameプロパティをテキストを含むように変更すると(つまり1234x)、文字列「5」に正しくソート/グループ化されます

質問:ここで何が起こっているのですか、どうすれば修正できますか?

4

1 に答える 1

2

私があなたのトレースを信頼するならname=1234、それは引用なしで書かれているので、それは。と見なされますNumber

で実行している場合gcSort String(a.templateTypeID + a.name)、実際には今回は2つの数値()を加算し、それらをa =>5+1234に変換し直します。String"1239"

あなたができることは、最初にあなたの名前を文字列に変換し、次にあなたの連結を行うことです:

(a.templateTypeID + a.name.toString()).toLowerCase()
于 2010-04-08T21:21:58.980 に答える