排序 – 在应用程序的creationComplete(Flex 4.5)上设置Spark DataGrid列的默认排序

前端之家收集整理的这篇文章主要介绍了排序 – 在应用程序的creationComplete(Flex 4.5)上设置Spark DataGrid列的默认排序前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个带有几列的spark DataGrid组件,我希望我的应用程序默认在DataGrid的第一列上降序.我想使用单击顶部标题一次时发生的内置默认排序.我没有必要对我正在使用的ArrayCollection进行排序或更改比较器的内容.

我还想要任何用户生成的排序,例如单击不同列的标题来覆盖默认排序.

有没有人对如何解决这个问题有任何想法?谢谢.

解决方法

只需使用sortByColumn方法
var columnIndexes:Vector.<int> = Vector.<int>([ 0 ]);
dataGrid.sortByColumns(columnIndexes,true);

这是一个完整的例子:

DataGridSort.mxml

<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" 
    xmlns:s="library://ns.adobe.com/flex/spark" 
    xmlns:mx="library://ns.adobe.com/flex/mx"
    creationComplete="sortDataGrid();">

    <fx:Script>
    <![CDATA[
        import mx.collections.ArrayCollection;
        import mx.collections.ArrayList;

        [Bindable]
        private var dataProvider:ArrayCollection = new ArrayCollection(
        [
            new Product("iPad","Detroit",599),new Product("iPod","Burbank",49),new Product("iPod Nano",39),new Product("Flash Drive",59),new Product("Galaxy Tab","Coldbridge",499),new Product("HTC Hero","Abidjan",700)
        ]);

        private function sortDataGrid():void
        {
            // you can also use Vector.<int>([ 0,1 ]); to sort by first 2 columns
            var columnIndexes:Vector.<int> = Vector.<int>([ 0 ]);

            // set 2nd argument to true to show sorting triangle
            dataGrid.sortByColumns(columnIndexes,true);
        }

    ]]>
    </fx:Script>

    <s:DataGrid id="dataGrid" horizontalCenter="0" verticalCenter="0" width="200"
        dataProvider="{dataProvider}">
        <s:columns>
            <s:ArrayCollection>
                <s:GridColumn dataField="name"/>
                <s:GridColumn dataField="location"/>
                <s:GridColumn dataField="price"/>
            </s:ArrayCollection>
        </s:columns>
    </s:DataGrid>

</s:Application>

Product.as

package
{
import flash.events.EventDispatcher;

public class Product extends EventDispatcher
{

    public function Product(name:String = null,location:String = null,price:Number = 0)
    {
        super();

        this.name = name;
        this.location = location;
        this.price = price;
    }

    public var name:String;

    public var location:String;

    public var price:Number;

}
}

猜你在找的Flex相关文章