Flex редактируемый комбинированный список - PullRequest
2 голосов
/ 20 декабря 2011

Я использую редактируемый комбинированный список для своего приложения. Combobox имеет поведение по умолчанию, например

Если я введу какой-то текст, который не похож на значения в поставщике данных в выпадающем списке, по умолчанию в выпадающем списке выберите первое значение поставщика данных и закройте раскрывающееся окно. Я хочу остановить это поведение по умолчанию.

Ex. У меня есть выпадающий список со значением поставщика данных. (стек, переполнение стека, переполнение стека A) Я открываю раскрывающийся список и вижу значение «stackoverflow A» в раскрывающемся списке. Теперь я ввожу значение «stackoverflow B», но это значение отсутствует в раскрывающемся списке, поэтому при вводе комбинированный список переопределяет введенный текст и заменяет «stackoverflow B» на первое значение «стека» поставщика данных (выпадающего) и запускает событие изменения selectedindex. Я хочу остановить поведение по умолчанию комбобокса выбора первого значения по умолчанию и искать введенное значение.

Я попытался сделать selectedindex равным -1 по умолчанию, но оно по-прежнему принимает первое значение по умолчанию. Любая работа или предложение будут полезны.

спасибо

Ответы [ 2 ]

0 голосов
/ 14 апреля 2015

Есть альтернативакоторый не пытается сопоставить текст со значениями поставщика данных (как описано выше) и не имеет этой ошибки .Это поле со списком ActionScript, Flex, только искра и доступно как с открытым исходным кодом .

0 голосов
/ 26 декабря 2011

Я думаю, это будет вам полезно ...

<?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>

может быть, это поможет тебе ...

ИМЕТЬ СЛАВНЫЙ Д @ у .......

...