DataGridColumn在ActionScript3中排序

时间:2009-07-08 22:00:10

标签: actionscript-3

有人可以告诉我们我们是否可以在FLEX中对这类数据进行排序

数据 -

2007年第1季度 2006年第2季度 2007年第2季度 2006年第二季度当我排序时,我需要这样的东西..

2006年第1季度 2006年第2季度 2007年第1季度 2007年第2季度

这是DataGridColumn排序的一部分,当我应用默认排序iam得到像

2006年第1季度 2007年第一季度 2006年第二季度 2007年第二季度

有些遗体可以让我知道你是否有逻辑,或者你之前做过类似的事情。

谢谢, 库马尔

2 个答案:

答案 0 :(得分:2)

他们是字符串......?您可以像这样定义自己的排序函数:sortCompareFunction

dataGridColumn.sortCompareFunction = compareQuarters;

private function compareQuarters(lhs:Object, rhs:Object):int
{
    var lhsArray:Array = lhs.split(" ");
    var rhsArray:Array = rhs.split(" ");
    if(lhsArray[2] > rhsArray[2])
    {
        return -1;
    }
    if(lhsArray[2] < rhsArray[2])
    {
        return 1;
    }
    if(lhsArray[0] > rhsArray[0])
    {
        return -1;
    }
    if(lhsArray[0] < rhsArray[0])
    {
        return 1;
    }
    return 0;
}

答案 1 :(得分:0)

您需要使用自定义排序功能,即:

<mx:DataGridColumn dataField="quarter" headerText="Quarter" width="100"
 sortCompareFunction="sortQuarter"/>

public function sortQuarter(obj1:Object, obj2:Object):int{
   //where obj1 and obj2 are your data objects containing the quarter strings, you'll need to parse them to compare to see which one is greater.
   if(obj1 < obj2){
      return -1;
   }

   if(obj1 == obj2){
      return 0;
   }


   if(obj1 > obj2){
      return 1;
   }
}

我建议断开四分之一字符串的最后4个字符来比较年份,然后如果它们相同,则比较每个字符串的第一个字符。