2011-03-15 46 views
1

我正在制作一个应用程序,其中显示带有日期(格式为DD/MM/YYYY)的一列和具有日期时间(格式为HH:MM)的另一列的AdvanvedDataGrid。我想根据日期进行日期排序(只需单击列标题),有一个预期行为的示例:在高级数据网格中对列进行排序

02/02/2011 | 10:42

03/02/2011 | 09:45

02/02/2011 | 11:45

03/02/2011 | 11:30

在“日期”标题进行排序,以便点击日期,考虑到日期时间:

02/02/2011 | 10:42

02/02/2011 | 11:45

03/02/2011 | 09:45

03/02/2011 | 11:30

我想使用AdvancedDataGridColumnGroups与它不起作用,任何suggetions或想法开始工作?

在此先感谢

编辑: 这是我的ADG代码:

<mx:AdvancedDataGrid id="myADG" width="100%" height="100%" color="0x323232" 
    dataProvider="{_currentDatosBusqueda}" verticalScrollPolicy="auto" 
    fontSize="10" fontFamily="Arial" fontStyle="normal" fontWeight="bold" doubleClickEnabled="true" 
    itemDoubleClick="dobleClickFilaDataGridBusqueda(event);" useRollOver="true">   


<mx:columns> 
    <mx:AdvancedDataGridColumn headerText="Paciente ID" dataField="patientID" paddingRight="0" resizable="false"/> 
    <mx:AdvancedDataGridColumn headerText="Apellidos y nombre de paciente" dataField="patientName" resizable="false"/> 
    <mx:AdvancedDataGridColumn headerText="Fecha del estudio" dataField="studyDate" paddingRight="0" textAlign="right" resizable="false"/> 
    <mx:AdvancedDataGridColumn headerText="Hora del estudio" dataField="studyTime" paddingRight="0" textAlign="right" resizable="false"/> 
    <mx:AdvancedDataGridColumn headerText="Accesion Number" dataField="accesionNumber" paddingRight="0" resizable="false"/> 

</mx:columns> 

_currentDatosBusqueda是一个ArrayCollection我从服务器接收(与日期的正确格式和约会时间)。

+0

你能分享一些代码? – 2011-03-15 09:03:34

回答

3

将日期栏填入日期栏,但只显示labelFunction的日期部分。对于标签的功能,创建formatDate这样的:

import mx.formatters.DateFormatter; 

private var formatter:DateFormatter = new DateFormatter(); 
//somewhere in init function 
formatter.formatString = "DD/MM/YYYY"; 

private function formatDate(item:Date, column:DataGridColumn):String { 
    return formatter.format(item); 
} 

此列排序应该考虑到完整的日期。

编辑:好的,数据在服务器上格式化。但是,没有什么能够阻止你将它合并到完整的日期/时间对象中,并在具有相应labelFunctions的两列上使用它。简单而强大。

+0

Thx为您的答复,但我正确格式显示在adg之前的日期和小时,我的问题是如何排序多列参加一个标准。我不知道我是否必须自己创建一个函数,或者如果flex支持这个问题。 – alicia 2011-03-15 10:09:27

+0

我只是觉得在一列中恢复完整日期要比在多个条件上实施排序容易得多。在Flex中从来没有听说过这样的事情,尽管它是开源的,但这并不简单。 – alxx 2011-03-15 11:08:23

+0

...你可以使用hh:mm:ss格式来做同样的小技巧。 – alxx 2011-03-15 11:09:43

0

最后,我可以在我的advandedDataGrid的设置比较功能的HeaderRelease属性对列进行排序,但我仍然有一个错误导致小箭头不显示排序方向,我该怎么设置呢?

我headerRelease功能是:

public function onHeaderRelease(evt:AdvancedDataGridEvent):void 
     { 
      evt.preventDefault(); 

      var srt:Sort = new Sort(); 
      var fields:Array = new Array(); 

      if(evt.columnIndex == lastIndex) 
      { 
       desc = !desc; 
      } 
      else 
      { 
       desc = false; 
       lastIndex = evt.columnIndex; 
      } 

      fields.push(new SortField(evt.dataField, true, desc)); 
      if(evt.dataField != "studyDate" && evt.dataField !="studyTime") 
       fields.push(new SortField("studyDate", true, true)); 
      if(evt.dataField != "studyTime") 
       fields.push(new SortField("studyTime", true, false)); 

      srt.fields = fields; 

      var ar:ArrayCollection = myADG.dataProvider as ArrayCollection; 
      ar.sort = srt; 
      ar.refresh(); 
     } 
相关问题