2

私はフレックスの初心者です。提案できる人に質問がありますか。

CPUステータスを監視するためのグリッドがあり、次のようになります

CPU | CPU差分
--------------
5.9 | +0.2 ^
4.0 | -0.6 対
12.7| -1.5v

上の^ , v図の は、[s:itemrenderer]



問題は、列「CPU dif」が通常ソートできないため、sortCompareFunction を使用してこれを解決することです

public static function compareCPU(typeOne:Object, typeTwo:Object ,grid:Object):int
{
  return ObjectUtil.numericCompare(Number(typeOne.cpu), Number(typeTwo.cpu) );
}
public static function compareCPUdif(typeOne:Object, typeTwo:Object ,grid:Object):int
{
  return ObjectUtil.numericCompare(Number(typeOne.cpu_dif), Number(typeTwo.cpu_dif) );
}

<s:GridColumn headerText="Cpu%" dataField="cpu" sortCompareFunction="compareCPU"/>
<s:GridColumn width="90" headerText="Cpu% Dif"  sortCompareFunction="compareCPUdif">
  <s:itemRenderer>
    <fx:Component>
      <s:GridItemRenderer width="100%" height="100%">
        <s:HGroup width="100%" height="100%" verticalAlign="middle" horizontalAlign="left">
          <s:HGroup width="50%" paddingLeft="5" horizontalAlign="left">
            <s:Label text="{data.cpu_dif}"/>
          </s:HGroup>    
          <s:HGroup  width="50%" paddingRight="5" horizontalAlign="right">
            <mx:Image source="{outerDocument.statusArrow.getItemAt(data.pic)as String}"/>
          </s:HGroup>
        </s:HGroup>
      </s:GridItemRenderer>
    </fx:Component>
  </s:itemRenderer>
</s:GridColumn>

半端ないのに変な感じで、一方向(昇順)でしか正しくソートでき
ないのですが、もう一度クリックしても反応がありません。

この問題の解決策はありますか?
よろしくお願いします

4

1 に答える 1

0

おそらく「+」と「-」の文字を..として扱います。文字であり、数学記号ではありません。

並べ替えが提供するオブジェクトを取得し、それらを自分で数値に変換してから、numericCompare.

于 2013-06-19T11:28:38.683 に答える