在advancedDataGrid中对列进行排序

时间:2011-03-15 09:00:38

标签: flex actionscript-3 advanceddatagrid

我正在创建一个应用程序,其中显示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是我从服务器收到的数组集(具有正确的日期和日期时间格式)。

2 个答案:

答案 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();
        }