2015-03-02 47 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

相关问题