Flex可编辑组合框
我正在为我的应用程序使用可编辑的组合框。 Combobox具有类似的默认行为
如果我输入一些与combobox dataprovider值不相似的文本,默认情况下,combobox会选择第一个dataprovider值并关闭下拉窗口。 我想停止这种默认行为。
防爆。 我有与dataprovider值组合框。 (stack,stackoverflow,stackoverflow A)我打开下拉菜单并看到“stackoverflow A”值在下拉列表中。 现在我输入值“stackoverflow B”,但是这个值不在下拉列表中,所以当我输入时,组合框覆盖我输入的文本,并用dataprovider(下拉)“stack”的第一个值替换“stackoverflow B”并激发selectedindex更改事件。 我想要停止默认选择第一个值的组合框的默认行为并查找输入值。
我已经尝试将selectedindex设置为-1,但默认情况下仍然取第一个值。 任何工作或建议都会有所帮助。
谢谢
我认为这会对你有所帮助......
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" horizontalAlign="center"
verticalAlign="middle" height="100%" width="100%">
<mx:Script>
<![CDATA[
public var arr:Array = new Array({isSelected:true,label:'ABC',score:'78',name:'ABC'},
{isSelected:true,label:'DEF',score:'50',name:'DEF'},
{isSelected:false,label:'GHI',score:'70',name:'GHI'},
{isSelected:false,label:'JKL',score:'80',name:'JKL'},
{isSelected:true,label:'TRE',score:'50',name:'MNO'});
public function dgCLG_dataChange():void
{
}
public function dgCLG_change():void
{
}
public function btnSubmit_click():void
{
dgCopy.dataProvider = dgCLG.dataProvider;
}
]]>
</mx:Script>
<mx:VBox height="100%" width="100%" horizontalAlign="center" verticalAlign="middle">
<mx:DataGrid id="dgCLG" dataProvider="{arr}" editable="true" dataChange="{dgCLG_dataChange();}" change="{dgCLG_change();}">
<mx:columns>
<mx:DataGridColumn headerText="" dataField="isSelected">
<mx:itemRenderer>
<mx:Component>
<mx:Box horizontalAlign="center" verticalAlign="middle" height="100%" width="100%">
<mx:Script>
<![CDATA[
override public function set data(value:Object):void
{
if(value != null)
{
super.data = value;
var temp:Object = value as Object;
chb.selected = temp.isSelected;
}
}
]]>
</mx:Script>
<mx:CheckBox id="chb"/>
</mx:Box>
</mx:Component>
</mx:itemRenderer>
</mx:DataGridColumn>
<mx:DataGridColumn headerText="Label" dataField="label" editable="false">
</mx:DataGridColumn>
<mx:DataGridColumn dataField="name" headerText="Person" itemEditor="ComCB" editorDataField="value" editable="true">
</mx:DataGridColumn>
</mx:columns>
</mx:DataGrid>
<mx:Button id="btnSubmit" label="Click" click="{btnSubmit_click();}" />
<mx:DataGrid id="dgCopy" editable="false">
<mx:columns>
<mx:DataGridColumn headerText="CopyLabel" dataField="label" />
<mx:DataGridColumn headerText="CopyMarks" dataField="score" />
<mx:DataGridColumn headerText="CopyPerson" dataField="name" />
</mx:columns>
</mx:DataGrid>
</mx:VBox>
</mx:Application>
这是ComCb组件。
<?xml version="1.0" encoding="utf-8"?>
<mx:ComboBox xmlns:mx="http://www.adobe.com/2006/mxml" dataProvider="{arr}" selectedIndex="1" creationComplete="{c_complete();}" >
<mx:Script>
<![CDATA[
public var arr:Array = new Array({label:'ABC'},{label:'DEF'},{label:'GHI'},{label:'JKL'},{label:'MNO'},{label:'XXX'})
public function c_complete():void
{
for(var i:int = 0; i < arr.length; i++)
{
if(arr[i].label == parentDocument.dgCLG.selectedItem.name)
{
this.selectedItem = arr[i];
}
}
}
]]>
</mx:Script>
</mx:ComboBox>
可能会对你有帮助...
有一个NICE D @ Y .......
对于<s:ComboBox>有一个替代方法,它不会尝试将文本与数据提供者值进行匹配(如上所述),并且没有此错误。 它是一个ActionScript,Flex,spark only组合框,并且可以作为开源使用。
链接地址: http://www.djcxy.com/p/34579.html下一篇: Flex: Bind values in a List with ComboBox as Item Renderer