2012-02-24 24 views
6

में एक ArrayCollection सुलझाने के लिए मैं आरोही के रूप में FIELDNAME द्वारा एक Arraycollection क्रमबद्ध करना चाहते हैं। यहां मेरा कोड है और मैं जानना चाहता हूं कि यह सही है या नहीं। क्या तुम्हारे पास कोई सुझाव है?कैसे फ्लेक्स

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

उत्तर

16

में तरह उपयोग करने के लिए कैसे कोड आपके पास सही है, एक प्रकार के अलावा है। arrColar होना चाहिए। कोड लगभग Flex Examples ब्लॉग पर कोड की तरह दिखता है, जो भी सही है।

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

के साथ संख्यात्मक लेकिन अन्यथा सब कुछ सही है सुनिश्चित नहीं हैं:

बस परिवर्तन नीचे की तरह ar को arrCol बदल रहा है।

3

आपका कोड ठीक है, फिर भी यहां कुछ उदाहरणों की जहां एक अंकीय और वर्णमाला तरह बटन क्लिक पर लागू किया जाता है।

वर्णमाला तरह 2 विशेषताओं पर छँटाई का एक अच्छा उदाहरण है। इस मामले में, प्राथमिक प्रकार 'प्रथम नाम' पर किया जाता है, माध्यमिक क्रम 'अंतिम नाम' पर किया जाता है।

संख्यात्मक तरह काफी लचीला है, यदि आप प्रकार क्षेत्र के संख्यात्मक पैरामीटर के लिए सच का एक बूलियन मान प्रदान करते हैं प्रकार एक नंबर करने के गुण डाली और प्रकार संख्या से होगा। यदि आप झूठे का बूलियन मान प्रदान करते हैं, तो अंतर्निहित स्ट्रिंग तुलना फ़ंक्शन का उपयोग किया जाता है। तुलनात्मक से पहले प्रत्येक डेटा आइटम स्ट्रिंग() फ़ंक्शन पर डाला जाता है। अशक्त का डिफ़ॉल्ट मान के साथ, पहले डेटा आइटम अगर यह एक संख्या या स्ट्रिंग और प्रकार है कि आत्मनिरीक्षण के आधार पर आय है देखने के लिए introspected है।

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

इसके अलावा यहां sortField के लिए भाषा का संदर्भ है ...

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

... और डेटा प्रदाताओं और संग्रह के लिए Adobe livedocs संदर्भ ...

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

... और यहाँ छंटाई और छानने के लिए एक अच्छा livedocs संदर्भ है ...

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