2012-02-24 18 views
6

Arraycollection, fieldName, artan olarak sıralamak istiyorum. İşte kodum ve doğru olup olmadığını bilmek istiyorum. Önerin var mı?Flex'te ArrayCollection nasıl sıralanır

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();} 

cevap

16

sıralama nasıl kullanılacağı tam örnektir. arrCol, ar olmalıdır. Kod, aynı zamanda doğru olan blogda Flex Examples kodundaki kodun neredeyse aynısı gibi görünüyor. Sayısal ama aksi takdirde her şey doğrudur ile

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(); 
} 

emin değil:

Hemen değişiklik aşağıda gibi ar için arrCol değiştirmektir.

3

Kodunuz gayet iyi, hatta burada, tuş tıklamalarında sayısal ve alfabetik bir sıralamanın uygulandığı birkaç örnek var.

Alfabetik sıralama, 2 öznitelikte sıralama için iyi bir örnektir. Bu durumda, birincil sıralama 'ad' üzerinde yapılır, ikincil sıralama 'soyadı' üzerinde yapılır.

Sayısal sıralama oldukça esnektir, sıralama alanının sayısal parametresi için bir true değeri sağlarsanız, sıralama özelliği bir sayıya ve sayıya göre sıralar. Boole false değeri sağlarsanız, yerleşik dize karşılaştır işlevi kullanılır. Veri öğelerinin her biri, karşılaştırmadan önce bir String() işlevine dökülür. Boş değer varsayılan değeriyle, bir sayı ya da dizgenin olup olmadığını görmek için ilk veri öğesi gözlenir ve sıralama bu içgözlemeye dayanarak devam eder.

<?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> 

Ayrıca burada ... sortField dil referanstır

http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/mx/collections/SortField.html

... ve veri sağlayıcılar ve koleksiyonları için Adobe LiveDocs referans ...

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

... ve burada sıralama ve filtreleme için iyi bir canlı yayın referansıdır ...

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