Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/apache-flex/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache flex HierarchicalCollectionView:一次性排序?_Apache Flex_Sorting_Actionscript_Hierarchical Data_Advanceddatagrid - Fatal编程技术网

Apache flex HierarchicalCollectionView:一次性排序?

Apache flex HierarchicalCollectionView:一次性排序?,apache-flex,sorting,actionscript,hierarchical-data,advanceddatagrid,Apache Flex,Sorting,Actionscript,Hierarchical Data,Advanceddatagrid,我有一个AdvancedDataGrid,它依赖HierarchycalCollectionView作为数据提供者。我想做的是在第一次加载数据时对其进行排序,但随后禁用排序,这样在初始加载之后添加的任何内容都不会导致网格再次自动排序。我试过这样的方法: this._myDataProvider = new HierarchicalCollectionView( new HierarchicalData(this._model.rootTask

我有一个AdvancedDataGrid,它依赖HierarchycalCollectionView作为数据提供者。我想做的是在第一次加载数据时对其进行排序,但随后禁用排序,这样在初始加载之后添加的任何内容都不会导致网格再次自动排序。我试过这样的方法:

this._myDataProvider = new HierarchicalCollectionView(
                           new HierarchicalData(this._model.rootTasks));

var mySort:Sort = new Sort();                   
mySort.fields = [new SortField("startDate")];

this._tasksDataProvider.sort = taskSorting;
this._tasksDataProvider.refresh();
this._tasksDataProvider.sort = null;
但是将sort设置为null只会使数据未排序。我想我要问的是:既然设置sort属性似乎可以使其保持动态排序,那么如何对底层层次结构数据进行排序。感谢您提供的任何帮助。

您可以 1.使用排序功能对原始数据进行排序, 2.克隆内容并将其放入一个新的集合,不进行排序(请小心,并进行手动克隆),
3.只需使用新的数据收集

就我个人而言,我会在您获取数据时更改排序顺序。要么在服务器端完成,要么在解析数据(即在模型中)时完成。您可以使用Array with sortOn进行一次性排序。

我也遇到过类似的问题,直到我意识到使用sort对象进行排序不会更改集合中项目的“物理”排序,因此当您删除排序时,下一次刷新会将视图还原为实际的“物理”排序。 与上面所述类似,我通过将子集合克隆为排序顺序来解决此问题:

    public static function buildPositionSort():Sort
    {
        var dataSortField:SortField = new SortField();
        dataSortField.name = "position";
        dataSortField.numeric = true;
        dataSortField.descending = false;
        var sort:Sort = new Sort();
        sort.fields = [ dataSortField ];
        return sort;
    }
    /**
     * This method is used to create a clone of ArrayCollection, because sorting does not
     * actually change the physical ordering of the items.
     */
    public static function createSortedArrayCollectionCopy(source:ArrayCollection):ArrayCollection
    {
        var target:ArrayCollection = new ArrayCollection();
        source.sort = buildPositionSort();
        source.refresh();
        for each (var item:Object in source)
        {
            if (item.children != null) item.children = createSortedArrayCollectionCopy(item.children);
            target.addItem(item);
        }
        return target;
    }