Flex:数据库驱动的DataGrid:箭头消失

时间:2008-11-27 07:43:18

标签: flex actionscript-3 flex-datagrid

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


        private function headerReleaseHandler(event:DataGridEvent):void
        {
            var column:DataGridColumn = DataGridColumn(event.currentTarget.columns[event.columnIndex]);

            if(this.count>0)
            {
                if(this.query.SortField == column.dataField)
                {
                    this.query.SortAscending = !this.query.SortAscending;
                }
                else
                {
                    this.query.SortField = column.dataField;
                    this.query.SortAscending = true;
                }
                this.fill();
            }

            event.preventDefault();
        }

除了没有显示表示排序的箭头外,这种方法非常有效。我怎么能做到这一点?

谢谢! / Niels

3 个答案:

答案 0 :(得分:5)

如果您正在寻找的话,这里有一个例子: http://blog.flexexamples.com/2008/02/28/displaying-the-sort-arrow-in-a-flex-datagrid-control-without-having-to-click-a-column/

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

答案 1 :(得分: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()方法。

答案 2 :(得分:0)

在上面的代码中,“this”引用的是datagrid,因为我对this.query.SortField感到困惑,我假设'this'和“query”是你自己的自定义对象。为什么要检查算数。那是多少。

此致 -Mohan