对 AdvancedDataGrid 中的列进行排序

发布于 2024-10-21 18:00:45 字数 1804 浏览 3 评论 0原文

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

02/02/2011 | 10:42

2011 年 3 月 2 日 | 09:45

2011 年 2 月 2 日 | 11:45

2011 年 3 月 2 日 | 11:30

因此,单击“日期”标题即可根据日期时间对日期进行排序:

02/02/2011 | 10:42

2011 年 2 月 2 日 | 11:45

2011 年 3 月 2 日 | 09:45

2011 年 3 月 2 日 | 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 是我从服务器收到的数组集合(具有正确的日期和日期时间格式)。

I'm making an application where I display an AdvanvedDataGrid with one column with dates(in format DD/MM/YYYY) and another with datetimes (in format HH:MM). I'd like to sort dates according with the datetimes as well(just clicking in the header of the column), there is an examplen of the expected behaviour:

02/02/2011 | 10:42

03/02/2011 | 09:45

02/02/2011 | 11:45

03/02/2011 | 11:30

So clicking in the "date" header sort the dates taking into account the datetimes:

02/02/2011 | 10:42

02/02/2011 | 11:45

03/02/2011 | 09:45

03/02/2011 | 11:30

I'm trying using the AdvancedDataGridColumnGroups with it does not work, any suggetions or ideas to start working?

Thanks in advance

EDIT:
This is the code for my 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 is an arraycollection I receive from the Server (with the correct format of dates and datetime).

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

可可 2024-10-28 18:00:45

在日期列中提供完整日期,但仅使用 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 的两列上使用它。简单而坚固。

Supply full date into date column, but render only date part with labelFunction. For label function, create formatDate like that:

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);
}

Sorting on this column should take into account full date.

Edit: OK, data is formatted on server. But nothing prevents you from combining it into full date/time object and use it on two columns with corresponding labelFunctions. Simple and robust.

江城子 2024-10-28 18:00:45

最后,我可以对 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();
        }

Finally I can sort the columns of my advandedDataGrid setting the compare function to the HeaderRelease property but I still having an error cause the little arrow dont show the sort direction, how can I set it?

My headerRelease function is:

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();
        }
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文