2015-03-02 49 views
-1

我需要一個基於用戶輸入過濾數據提供者的組合框嗎?基於用戶輸入過濾數據提供者的組合框(combobox)

例如,如果用戶輸入爲「CA」,則組合框將過濾數據提供者並僅顯示以「CA」開頭的數據。 (「CANADA」和「CALIFORNİA」)

注意:combobox是可編輯的。

,我需要這個組合框在Flex 3中

編輯:好吧,我得到了javaluca一些幫助,我寫了這一點。

<?xml version="1.0" encoding="utf-8"?> 
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" 
    creationComplete="createCompFonk()"> 
    <mx:Script> 
    <![CDATA[ 
     import mx.controls.Text; 
     import mx.controls.dataGridClasses.DataGridColumn; 
    import mx.controls.TextInput; 
import mx.events.ItemClickEvent; 
import mx.events.DataGridEvent; 
import mx.collections.ArrayCollection; 
import mx.controls.Alert; 
import mx.collections.ListCollectionView; 
import mx.controls.ComboBox 

    var sayac:int=0; 
    var degisken:String; 

    [Bindable] 
    private var initDG:ArrayCollection = new ArrayCollection([ {islem:'Tahsilat112', tarih:'01/01/2000', isim:'ATA'},{islem:'Ödeme', tarih:'02/03/2010', isim:'BETA'}  ]); 




     public function createCompFonk():void{ 
     gggcombo.textInput.addEventListener(TextEvent.TEXT_INPUT, textChange); 

     } 
    protected function textChange(evt:TextEvent):void{ 
    (gggcombo.dataProvider as ArrayCollection).filterFunction = filterFunc; 
    (gggcombo.dataProvider as ArrayCollection).refresh(); 
    // REFRESH IS NECESSARY 
} 

public function filterFunc(item:Object):Boolean{ 
    var pattern:String = gggcombo.textInput.text.toLowerCase(); 
    var string:String = item.islem; 

    return pattern == string.substr(0, pattern.length); 
} 
     ]]> 
     </mx:Script> 


    <mx:Panel x="0" y="0" width="435" height="216" 
     layout="absolute" title="Empty Default Datagrid"> 


    <mx:ComboBox id="gggcombo" dataProvider="{initDG}" labelField="islem" editable="true" > 


    </mx:ComboBox> 
    </mx:Panel> 


</mx:Application> 

但我上這些行的錯誤:通過靜態類型爲mx.controls參考inaccesible屬性爲textInput的 嘗試ACCES:

gggcombo.textInput.addEventListener(TextEvent.TEXT_INPUT, textChange); 

var pattern:String = gggcombo.textInput.text.toLowerCase(); 

錯誤是:comboBox

+0

嘗試對過濾器和自動完成Klovis組件:http://lab.kapit.fr/default/klovis-kap-it-libraries/ – 2015-03-02 10:59:15

回答

2

如果您使用ArrayCollection Class f或者combobox數據提供者,您可以使用filterFunction

添加監聽器爲textInput被包含到組合

myCombo.textInput.addEventListener(TextEvent.TEXT_INPUT, textChange); 

功能上textChange派出

protected function textChange(evt:TextEvent):void{ 
    (myCombo.dataProvider as ArrayCollection).filterFunction = filterFunc; 
    (myCombo.dataProvider as ArrayCollection).refresh(); 
    // REFRESH IS NECESSARY 
} 

的filterFunction用於過濾數據提供程序

public function filterFunc(item:Object):Boolean{ 
    var pattern:String = myCombo.textInput.text.toLowerCase(); 
    var string:String = item.name; 

    return pattern == string.substr(0, pattern.length); 
} 
+0

感謝您的幫助,但是當我嘗試運行我的應用程序時。我在這一行出現錯誤:var pattern:String = gggcombo.textInput.text.toLowerCase();錯誤是:嘗試通過靜態類型爲mx.controls的引用訪問可訪問屬性textInput:comboBox – cavadeveloper 2015-03-02 11:55:55

+1

對於mx:ComboBox,請使用gggcombo.text.toLowerCase(); spark組件具有textInput屬性 – Javaluca 2015-03-02 13:35:33

相關問題