1

在 Flex 中,我使用以下代码来允许在 DataGrid 中进行排序(数据在服务器端进行分页和排序)。

        私有函数 headerReleaseHandler(event:DataGridEvent):void
        {
            var column:DataGridColumn = DataGridColumn(event.currentTarget.columns[event.columnIndex]);

            如果(this.count>0)
            {
                如果(this.query.SortField == column.dataField)
                {
                    this.query.SortAscending = !this.query.SortAscending;
                }
                别的
                {
                    this.query.SortField = column.dataField;
                    this.query.SortAscending = true;
                }
                this.fill();
            }

            event.preventDefault();
        }

这非常有效,只是没有显示指示排序的箭头。我怎样才能做到这一点?

谢谢!/尼尔斯

4

3 回答 3

5

如果这是您要查找的内容,这里有一个示例:http: //blog.flexexamples.com/2008/02/28/displaying-the-sort-arrow-in-a-flex-datagrid-control-without-不得不点击列/

看起来您需要刷新数据提供者使用的集合。

于 2008-12-23T00:23:04.203 回答
1

我遇到了同样的问题,我发现的唯一解决方案是覆盖 DataGrid 并创建一个自定义的。这是课程:

public class DataGridCustomSort extends DataGrid
{

    public function DataGridCustomSort()
    {
        super();

        addEventListener(DataGridEvent.HEADER_RELEASE,
            headerReleaseHandlerCustomSort,
            false, EventPriority.DEFAULT_HANDLER);
    }       

    public function headerReleaseHandlerCustomSort(event:DataGridEvent):void {
        mx_internal::sortIndex = event.columnIndex;
        if (mx_internal::sortDirection == null || mx_internal::sortDirection == "DESC")
            mx_internal::sortDirection = "ASC";
        else
            mx_internal::sortDirection = "DESC";
        placeSortArrow();
    }

}

当您获得 HEADER_RELEASE 事件并设置列索引和方向信息时,您必须专门调用 placeSortArrow() 方法。

于 2011-05-11T14:58:01.940 回答
0

在上面的代码中,“this”指的是数据网格,因为我对 this.query.SortField 感到困惑,我假设“this”和“query”是您自己的自定义对象。为什么要检查计数。那算什么。

问候-莫汉

于 2009-03-25T19:53:51.687 回答