DataGridColumn Сортировка в ActionScript3 - PullRequest
0 голосов
/ 09 июля 2009

Может кто-нибудь сообщить мне, можем ли мы отсортировать данные такого типа в FLEX

ДАННЫЕ -

1-й квартал 2007 г. 2-й квартал 2006 2-й квартал 2007 2-й квартал 2006 г. Когда я сортирую, мне нужно что-то подобное ..

1-й квартал 2006 г. 2-й квартал 2006 1-й квартал 2007 2-й квартал 2007 года

Это часть сортировки DataGridColumn, когда я применяю сортировку по умолчанию, получая как

1 квартал 2006 г. 1 квартал 2007 2 квартал 2006 г. 2 квартал 2007 года

Может ли какое-нибудь тело дать мне знать, есть ли у вас логика или вы сделали что-то подобное ранее.

Спасибо, Кумар

Ответы [ 2 ]

2 голосов
/ 09 июля 2009

Это струны ...? Вы можете определить свою собственную функцию сортировки следующим образом: 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;
}
0 голосов
/ 09 июля 2009

Вы захотите использовать пользовательскую функцию сортировки, например:

<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 символа строк четверти, чтобы сравнить годы, а затем, если они совпадают, сравнить первые символы каждой строки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...