2012-07-24 100 views
2

我是flex的新手,我可以给任何可以提出建议的人一些问题。flex datagrid排序其中包含itemrenderer

我有监视CPU状态的网格,它看起来像这样

CPU | CPU dif
--------------
5.9 | +0.2^
4.0 | -0.6 v
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)); 
} 

AND

<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> 

它l ooks奇怪,它的工作一半,他们可以正确排序只有一种方法(升序)
当我再次点击它,没有响应。

你能解决这个问题吗?
最高谢谢提前

+0

Hi @Shigeky你有这个问题的解决方案吗?..因为也许我有一个。请告诉我。 – 2013-06-10 00:31:16

回答

0

它可能将'+'和' - '字符视为..以及。字符而不是数学符号。

拿这个排序所提供的对象,将它们转换成你自己的数字,然后应用numericCompare