2011-03-15 68 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(); 
     } 
相關問題