Сортировать столбцы в advancedDataGrid - PullRequest
1 голос
/ 15 марта 2011

Я делаю приложение, в котором я отображаю AdvanvedDataGrid с одним столбцом с датами (в формате ДД / ММ / ГГГГ) и другим с датами и временем (в формате ЧЧ: ММ). Я также хотел бы отсортировать даты по дате и времени (просто щелкнув в заголовке столбца), есть пример ожидаемого поведения:

02/02/2011 | 10: 42

03/02/2011 | 09: 45

02/02/2011 | 11: 45

03.02.2011 | 11: 30

Таким образом, щелкнув в заголовке «date», отсортируйте даты с учетом datetime:

02/02/2011 | 10: 42

02/02/2011 | 11: 45

03/02/2011 | 09: 45

03/02/2011 | 11: 30

Я пытаюсь использовать AdvancedDataGridColumnGroups с ним не работает, какие-либо предложения или идеи, чтобы начать работать?

Заранее спасибо

EDIT: Это код для моей 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 ]

3 голосов
/ 15 марта 2011

Укажите полную дату в столбце даты, но отобразите только часть даты с 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 голосов
/ 20 марта 2011

Наконец-то я могу отсортировать столбцы в моей настройке 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();
        }
...