带有“Null”/“All”选项的Flex ComboBox子类?

问题描述:

想知道是否有人知道现有的ComboBox子类的组件,但可以让你指定一个列表中的项目,其中包含像“all”或“none”这样的将selectedItem设置为null的标签?我研究过写一篇文章,并且由于组件的内部结构,它看起来像很多工作,所以我想知道是否有人已经完成了它?带有“Null”/“All”选项的Flex ComboBox子类?

+0

为了澄清,我希望有一个组合框,让你回去将selectedItem = NULL的默认状态,但仍功能正常。我不想构建自定义列表并将它们发送到正常的组合框。 – Sophistifunk 2009-11-13 11:12:38

没有选择任何项目时,ComboBox的外观如何?或为此选择的所有项目?这听起来像你应该使用List而不是ComboBox。看看Tour de Flex上的列表控件。

+0

它看起来与第一次看到它时相同,或者不显示任何内容或提示字段的内容。 – Sophistifunk 2009-11-13 11:10:22

如何像this.

运行以下命令:

<?xml version="1.0" encoding="utf-8"?> 
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" width="100%" height="100%" creationComplete="onCreationComplete()"> 
    <mx:Script> 
     <![CDATA[ 
      private var myData:Array = new Array(); 

      [Bindable] 
      private var comboData:Array = new Array(); 

      [Bindable] 
      private var selectedData:String = ""; 

      private function onCreationComplete():void 
      { 
       myData.push({"label" : "First", "value" : "First"}); 
       myData.push({"label" : "Second", "value" : "Second"}); 
       myData.push({"label" : "Third", "value" : "Third"}); 

       comboData.push({"label" : "<None>", "value" : "<None>"}); 
       comboData.push({"label" : "<All>", "value" : "<All>"}); 
       for(var i:int = 0; i < myData.length; i++) { 
        comboData.push(myData[i]); 
       } 
      } 

      private function onSmartComboBoxChange():void 
      { 
       if(smartComboBox.selectedItem) { 
        if(smartComboBox.selectedItem.value == "<None>") { 
         selectedData = ""; 
        } else if(smartComboBox.selectedItem.value == "<All>") { 
         selectedData = ""; 
         for(var i:int = 0; i < myData.length; i++) { 
          selectedData += myData[i].value + ", "; 
         } 
        } else { 
         selectedData = comboData[smartComboBox.selectedIndex].value; 
        } 
       } 
      } 
     ]]> 
    </mx:Script> 
    <mx:VBox> 
     <mx:ComboBox id="smartComboBox" dataProvider="{comboData}" change="onSmartComboBoxChange()" labelField="label" /> 
     <mx:Label id="selectedDataLabel" text="{selectedData}" /> 
    </mx:VBox> 
</mx:Application>