我正在创建一个应用程序,其中显示AdvanvedDataGrid,其中一列包含日期(格式为DD / MM / YYYY),另一列显示日期时间(格式为HH:MM)。我想根据日期时间对日期进行排序(只需单击列的标题),有一个预期行为的示例:
02/02/2011 | 10时42分
03/02/2011 | 9点45分
02/02/2011 | 11:45
03/02/2011 | 11:30
因此,点击“日期”标题会根据日期时间对日期进行排序:
02/02/2011 | 10时42分
02/02/2011 | 11:45
03/02/2011 | 9点45分
03/02/2011 | 11:30
我正在尝试使用AdvancedDataGridColumnGroups,它不起作用,任何建议或想法开始工作?
提前致谢
编辑: 这是我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是我从服务器收到的数组集(具有正确的日期和日期时间格式)。
答案 0 :(得分: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的两列上使用它。简单而强大。
答案 1 :(得分:0)
最后,我可以对advandedDataGrid的列进行排序,将compare函数设置为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();
}