2010-02-12 94 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> 
相關問題