【问题标题】:flex datagrid sorting which contain itemrenderer包含 itemrenderer 的 flex 数据网格排序
【发布时间】:2012-07-22 14:36:04
【问题描述】:

我是 flex 的新手,我可以向任何可以建议的人提出一些问题。

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

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

上图中的^ , v代表[s:itemrenderer]



问题是“CPU差异”列无法正常排序,所以我使用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>

看起来很奇怪,它只工作了一半,它们只能以一种方式正确排序(升序排序)
当我再次点击它时,没有任何反应。

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

【问题讨论】:

  • 嗨@Shigeky你有这个问题的解决方案吗?..因为也许我有一个。请告诉我。

标签: apache-flex sorting datagrid itemrenderer


【解决方案1】:

它可能会将“+”和“-”字符视为..。字符而不是数学符号。

获取排序提供给您的对象,自行将它们转换为数字,然后应用numericCompare

【讨论】:

    猜你喜欢
    • 2011-10-12
    • 2012-01-21
    • 2015-02-03
    • 2010-12-29
    • 1970-01-01
    • 2010-09-10
    • 2016-05-07
    • 1970-01-01
    • 2011-04-07
    相关资源
    最近更新 更多