有人可以告诉我们我们是否可以在FLEX中对这类数据进行排序
数据 -
2007年第1季度 2006年第2季度 2007年第2季度 2006年第二季度当我排序时,我需要这样的东西..
2006年第1季度 2006年第2季度 2007年第1季度 2007年第2季度
这是DataGridColumn排序的一部分,当我应用默认排序iam得到像
2006年第1季度 2007年第一季度 2006年第二季度 2007年第二季度
有些遗体可以让我知道你是否有逻辑,或者你之前做过类似的事情。
谢谢, 库马尔
答案 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个字符来比较年份,然后如果它们相同,则比较每个字符串的第一个字符。