2010-02-12 69 views
1

我在数据网格中有一个列,其值为“星期一”,“星期二”等,并且我想知道,我如何对列进行排序才能按正确的顺序排列。做一个正常的排序不会很明显,因为这些日子不是按字母顺序排列的(周四周三)。我假设某种itemrenderer,但任何人都有一段代码来说明这将如何工作?Flex:如何在datagrid中为天(星期一,星期二,星期三)分类列?

感谢

回答

1

据我所知没有任何内置的或者排序星期几或一周中的一天得到的天数时,那么你需要建立两个。你不需要一个自定义的itemRenderer来做排序,只是一个排序比较函数。

<?xml version="1.0" encoding="utf-8"?> 
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute"> 
    <mx:Script> 
     <![CDATA[ 
      import mx.collections.ArrayCollection; 

      [Bindable] 
      private var days:ArrayCollection = 
           new ArrayCollection([{day: "Wednesday"}, 
                {day: "Thursday"}, 
                {day: "Monday"}, 
                {day: "Tuesday"}, 
                {day: "Sunday"}, 
                {day: "Saturday"}, 
                {day: "Friday"} 
                ]); 

      private static var dayMap:Object = { 
              Sunday: 0, 
              Monday: 1, 
              Tuesday: 2, 
              Wednesday: 3, 
              Thursday: 4, 
              Friday: 5, 
              Saturday: 6}; 

      private function daySorter(day1:Object, day2:Object):int { 
       var i1:int = dayMap[day1.day]; 
       var i2:int = dayMap[day2.day]; 

       return i1 < i2 ? -1 : i1 == i2 ? 0 : 1; 
      } 
     ]]> 
    </mx:Script> 

    <mx:DataGrid dataProvider="{days}"> 
     <mx:columns> 
      <mx:DataGridColumn dataField="day" sortCompareFunction="{daySorter}" /> 
     </mx:columns> 
    </mx:DataGrid> 
</mx:Application> 
相关问题