我有一个下拉列表"选择一名员工"这是可选的。我需要它有#34;没有人"在顶部,以便用户可以更改回NoOne,如果他'我已经选择了#34; John Someone"。
我的问题是如何保留提示项,或者在-1处添加虚拟项而不更改数据提供者(我真的很讨厌添加"没有人"到原来的employeeList数据提供者)
P / S:同样的问题,但仍然没有答案:答案 0 :(得分:1)
我建议通过创建一个名为“DummyArrayCollection”的类来扩展ArrayCollection类。您可以将虚拟变量存储在那里,并将其用作数据提供者,而不会影响原始员工列表:
public class DummyArrayCollection extends ArrayCollection
{
private var _firstElement:String;
private var _dummyArray:Array;
public function DummyArrayCollection(source:Array=null)
{
super(source);
_dummyArray = init(source);
_firstElement = "";
}
public function init(src:Array):Array{
var retArr:Array = new Array();
retArr[0] = _firstElement; //add your dummy element here
for(var i:int=0;i<src.length;i++){
retArr[i] = src[i];
}
return retArr;
}
}
答案 1 :(得分:1)
将更改事件处理程序添加到下拉列表中:
change = "{myDropDown.selectedIndex = -1}"
这样,在选择项目后,您的提示将被重复使用。
答案 2 :(得分:1)
以防有人感兴趣我刚刚发现了这个:
答案 3 :(得分:0)
这是一个有效的flex 3示例。我确信它可以很容易地转换为flex 4。
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" creationComplete="init( )" width="100%" layout="absolute">
<mx:Script>
<![CDATA[
import mx.collections.ArrayCollection;
import mx.collections.XMLListCollection;
[Bindable]
public var personsList:XMLListCollection;
private function init( ):void{
var xml:XML =
<root>
<persons>
<person><label>jim</label><value>jim</value></person>
<person><label>joe</label><value>joe</value></person>
<person><label>bob</label><value>bob</value></person>
<person><label>harry</label><value>harry</value></person>
<person><label>sally</label><value>sally</value></person>
</persons>
</root>;
this.personsList = new XMLListCollection( xml.persons.person )
var myFirstNodeXML:XML = <person><label>None Selected</label><value>none</value></person>;
this.personsList.addItemAt(myFirstNodeXML,0);
myCB.selectedIndex = 0;
}
]]>
</mx:Script>
<mx:ComboBox id="myCB" dataProvider="{this.personsList}"/>
</mx:Application>
答案 4 :(得分:0)
dropDownList.selectedItem = null