2


0

文字列「5」から数値5を分離するグループ化コレクション
  • 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コードの例:


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」に正しくソート/グループ化されます

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

1 Answer


2


あなたのトレースを信頼している場合、 name = 1234`は引用符なしで記述されているので、 Number`と見なされます。

gcSort` String(a.templateTypeID + a.name) で行う場合、実際には今回は2つの数値( 5 + 1234`)を追加し、それらを String ⇒`に変換し直しています。 「1239」 `。

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

(a.templateTypeID + a.name.toString()).toLowerCase()