Flex中如何对DataGrid的日期列进行排序的例子

By Minidxer | July 21, 2008

日期有很多格式,比如可以使YYYY-MM-DD,也可以使MM-DD-YYYY,如果是后一种的话,那么直接将其作为字符串来排序是不可以的。接下来的例子就演示了Flex中如何对DataGrid的日期列进行排序。

让我们先来看一下Demo可以右键View Source或点击这里察看源代码):

下面是完整代码(或点击这里察看):

Download: main.mxml
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
  3.         layout="vertical"
  4.         verticalAlign="middle"
  5.         backgroundColor="white">
  6.  
  7.     <mx:Script>
  8.         <![CDATA[
  9.             import mx.utils.ObjectUtil;
  10.  
  11.             private function date_sortCompareFunc(itemA:Object, itemB:Object):int {
  12.                 /* Date.parse() returns an int, but
  13.                    ObjectUtil.dateCompare() expects two
  14.                    Date objects, so convert String to
  15.                    int to Date. */
  16.                 var dateA:Date = new Date(Date.parse(itemA.dob));
  17.                 var dateB:Date = new Date(Date.parse(itemB.dob));
  18.                 return ObjectUtil.dateCompare(dateA, dateB);
  19.             }
  20.  
  21.             private function date_dataTipFunc(item:Object):String {
  22.                 return dateFormatter.format(item.dob);
  23.             }
  24.         ]]>
  25.     </mx:Script>
  26.  
  27.     <mx:ArrayCollection id="arrColl">
  28.         <mx:source>
  29.             <mx:Array>
  30.                 <mx:Object name="User A" dob="04/14/1980" />
  31.                 <mx:Object name="User B" dob="01/02/1975" />
  32.                 <mx:Object name="User C" dob="12/30/1977" />
  33.                 <mx:Object name="User D" dob="10/27/1968" />
  34.             </mx:Array>
  35.         </mx:source>
  36.     </mx:ArrayCollection>
  37.  
  38.     <mx:DateFormatter id="dateFormatter" formatString="MMMM D, YYYY" />
  39.  
  40.     <mx:DataGrid id="dataGrid" dataProvider="{arrColl}">
  41.         <mx:columns>
  42.             <mx:DataGridColumn dataField="name"
  43.                     headerText="Name:" />
  44.  
  45.             <mx:DataGridColumn dataField="dob"
  46.                     headerText="Date of birth:"
  47.                     sortCompareFunction="date_sortCompareFunc"
  48.                     showDataTips="true"
  49.                     dataTipFunction="date_dataTipFunc" />
  50.         </mx:columns>
  51.     </mx:DataGrid>
  52.  
  53. </mx:Application>
代码:Peter deHaan 翻译/整理/编译:minidxer

Topics: Flex | Tags: , , , , ,

Search Posts

Archives

Sponsored Ads