Domanda

Voglio ordinare un arraycollezione per campo da campo come ascendente.Ecco il mio codice e voglio sapere se è giusto.Hai qualche suggerimento?

public static function arrayCollectionSort(ar:ArrayCollection, fieldName:String, isNumeric:Boolean):void 
    {var dataSortField:SortField = new SortField();
        dataSortField.name = fieldName;
        dataSortField.numeric = isNumeric;
        var numericDataSort:Sort = new Sort();
        numericDataSort.fields = [dataSortField];
        arrCol.sort = numericDataSort;
        arrCol.refresh();}
.

È stato utile?

Soluzione

Il codice che hai è corretto, ad eccezione di un tipo.arrCol dovrebbe essere ar.Il codice sembra quasi esattamente come il codice sul blog Esempi flessibili , che è anche corretto.

Basta cambiare è modificare arrCol su ar come di seguito:

public static function arrayCollectionSort(ar:ArrayCollection, fieldName:String, isNumeric:Boolean):void 
{
    var dataSortField:SortField = new SortField();
    dataSortField.name = fieldName;
    dataSortField.numeric = isNumeric;
    var numericDataSort:Sort = new Sort();
    numericDataSort.fields = [dataSortField];
    ar.sort = numericDataSort;
    ar.refresh();
}
.

Non sono sicuro di numerico ma altrimenti tutto il resto è corretto.

Altri suggerimenti

Il tuo codice va bene, anche così qui ci sono un paio di esempi in cui un tipo numerico e un ordinamento alfabetico vengono applicati sui clic dei clic.

L'ordinamento alfabetico è un buon esempio di ordinamento su 2 attributi. In questo caso, l'ordinamento primario viene eseguito sul 'nome', il tipo secondario viene eseguito sul 'lastName'.

L'ordinamento numerico è piuttosto flessibile, se si fornisce un valore booleano di true per il parametro numerico del campo Sort, l'ordinamento lancia l'attributo a un numero e ordinamento per numero. Se si fornisce un valore booleano di false, viene utilizzata la funzione Confronta stringa integrata. Ciascuna delle voci di dati viene lanciata su una funzione String () prima del confronto. Con il valore predefinito di NULL, la prima voce di dati è introspetta per vedere se è un numero o una stringa e il procedimento di ordinamento in base a quella introspezione.

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="vertical" minWidth="955" minHeight="600">

    <mx:Button label="Sort by first then last name" click="sortItemsByName()"/>
    <mx:Button label="Sort by number" click="sortItemsByNumber()"/>

    <mx:DataGrid dataProvider="{items}"
                 width="300"
                 height="300">
        <mx:columns>
            <mx:DataGridColumn dataField="number"/>
            <mx:DataGridColumn dataField="firstname"/>
            <mx:DataGridColumn dataField="lastname"/>
        </mx:columns>
    </mx:DataGrid>

    <mx:ArrayCollection id="items">
        <mx:Object number="3" firstname="John" lastname="Brown"/>
        <mx:Object number="1" firstname="Kate" lastname="Brown"/>
        <mx:Object number="4" firstname="Jeremy" lastname="Ryan"/>
        <mx:Object number="5" firstname="Joe" lastname="Wilson"/>
        <mx:Object number="2" firstname="Greg" lastname="Walling"/>
    </mx:ArrayCollection>

    <mx:Script>
        <![CDATA[           
            import mx.collections.ArrayCollection;
            import mx.collections.Sort;
            import mx.collections.SortField;

            /**
             * Sort the arraycollection by the firstname and then the last name
             * */
            private function sortItemsByName():void{
                var srt:Sort = new Sort();
                srt.fields = [new SortField("firstname"), new SortField("lastname")];
                items.sort = srt;
                items.refresh();
            }

            /**
             * Sort the arraycollection numerically
             * */
            private function sortItemsByNumber():void{
                var srt:Sort = new Sort();
                srt.fields = [new SortField("number", true, false, true)];
                items.sort = srt;
                items.refresh();
            }

        ]]>
    </mx:Script>
</mx:Application>
.

Anche qui è il riferimento della lingua per il sortimento ...

http://help.adobe. COM / EN_US / Flashplatform / Riferimento / ActionScript / 3 / MX / Collezioni / Sortfield.html

... e il riferimento Adobe Livedocs per i fornitori di dati e le collezioni ...

http://livedocs.adobe.com/ Flex / 3 / html / help.html? Content= About_DataProvider_2.html

... ed ecco un buon riferimento Livedocs per l'ordinamento e il filtraggio ...

http://livedocs.adobe.com/ flex / 3 / html / help.html? content= About_DataProvider_4.html

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top