Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/apache-flex/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Actionscript 3 在mx数据网格中使用itemRenderer_Actionscript 3_Apache Flex_Datagrid_Flex4.5_Itemrenderer - Fatal编程技术网

Actionscript 3 在mx数据网格中使用itemRenderer

Actionscript 3 在mx数据网格中使用itemRenderer,actionscript-3,apache-flex,datagrid,flex4.5,itemrenderer,Actionscript 3,Apache Flex,Datagrid,Flex4.5,Itemrenderer,我有一个2列的mx数据网格。第一列的数据在TextInput中呈现,第二列的呈现器在ComboBox中呈现。当我更改组合框中的选定值时,我希望同一索引的TextInput将其文本更改为组合框中选定的值。有人能帮我吗?我的代码如下 <mx:DataGrid id="myGrid" rowHeight="25" dataProvider="{Testarray}" width="100%" height="205" chromeColor="#D0CCAF" headerHeight="0"

我有一个2列的mx数据网格。第一列的数据在TextInput中呈现,第二列的呈现器在ComboBox中呈现。当我更改组合框中的选定值时,我希望同一索引的TextInput将其文本更改为组合框中选定的值。有人能帮我吗?我的代码如下

<mx:DataGrid id="myGrid" rowHeight="25" dataProvider="{Testarray}" width="100%" height="205" chromeColor="#D0CCAF" headerHeight="0" showHeaders="false" >
                <mx:columns>
                    <mx:DataGridColumn headerText="My Header 1"                                                                        
                                       editable="true"                                                                        
                                       dataField="LBL"                                                                            
                                       >
                        <mx:itemRenderer>
                            <fx:Component>
                                <mx:HBox horizontalAlign="left" horizontalScrollPolicy="off" verticalScrollPolicy="off">



                                    <s:TextInput id="label_txt" text="{data.LBL}" width="98%"/>
                                </mx:HBox>
                            </fx:Component>
                        </mx:itemRenderer>
                    </mx:DataGridColumn>    

                    <mx:DataGridColumn headerText="My Header 2"                                                                       
                                       editable="true"                                                                                
                                       rendererIsEditor="true"                                                                        
                                       dataField="ALIAS"                                                                            
                                       >
                        <mx:itemRenderer>
                            <fx:Component>

                                    <renderers:comboItemRenderer height="80%" change="comboitemrenderer1_changeHandler(event)" lookupField="ALIAS" labelField="ALIAS" dataProvider="{outerDocument.searchCustomizationComponents_array}">
                                        <fx:Script>
                                            <![CDATA[
                                                import mx.events.DataGridEvent;
                                                import mx.events.ListEvent;

                                                protected function comboitemrenderer1_changeHandler(event:ListEvent):void
                                                {
                                //WHAT TO PUT HERE?
                                                }

                                            ]]>
                                        </fx:Script>

                                    </renderers:comboItemRenderer>
                            </fx:Component>
                        </mx:itemRenderer>
                    </mx:DataGridColumn>

                </mx:columns>
            </mx:DataGrid>

我自己买的。谢谢朋友们。
我需要为textInput添加这两行代码,以获取组合框中selectedItem的值。
受保护的函数ComboItemRender1\u changeHandler(事件:ListEvent):void
{
outerDocument.myGrid.dataProvider[outerDocument.myGrid.selectedIndex]['LBL']=this.selectedItemKey;
outerDocument.myGrid.invalidateList();
}
还要注意,我的comboitemrenderer的代码如下所示:
I got it myself. Thanks buddies.
I needed to add these 2 lines of codes for the textInput to take the value of the selectedItem int he ComboBox.
protected function comboitemrenderer1_changeHandler(event:ListEvent):void
                                                {
                                                    outerDocument.myGrid.dataProvider[outerDocument.myGrid.selectedIndex]['LBL'] = this.selectedItemKey; 
                                                    outerDocument.myGrid.invalidateList();

                                    }
Also note that the code for my comboitemrenderer below:
    <mx:ComboBox
        xmlns:mx="http://www.adobe.com/2006/mxml" 
        dataChange="setSelected()" 
        change="onSelectionChange(event)"
        focusEnabled="true">
        <mx:Script>
            <![CDATA[
                import mx.events.DataGridEvent;
                import mx.events.ListEvent;
                import mx.controls.dataGridClasses.DataGridListData;

                private var _ownerData:Object;
                private var _lookupField:String = "value";

                // When using this component as an itemEditor rather than an itemRenderer
                // then set ' editorDataField="selectedItemKey"' on the column to 
                // ensure that changes to the ComboBox are propogated.
                [Bindable] public var selectedItemKey:Object;

                public function set lookupField (value:String) : void {
                    if(value) {
                        _lookupField = value;
                        setSelected();
                    }
                }           
                override public function set data (value:Object) : void {
                    if(value) {                    
                        _ownerData = value;
                        setSelected();
                    }
                }
                override public function get data() : Object {
                    return _ownerData;
                }            
                private function setSelected() : void {
                    if (dataProvider && _ownerData) {
                        var col:DataGridListData = DataGridListData(listData);
                        for each (var dp:Object in dataProvider) {
                            if (dp[_lookupField] == _ownerData[col.dataField]) {
                                selectedItem = dp;
                                selectedItemKey = _ownerData[col.dataField];
                                return;     
                            }
                        }                    
                    }
                    selectedItem = null;
                }
                private function onSelectionChange (e:ListEvent) : void {
                    if (selectedItem && _ownerData) {                    
                        var col:DataGridListData = DataGridListData(listData);
                        _ownerData[col.dataField] = selectedItem[_lookupField];
                        selectedItemKey = selectedItem[_lookupField];

    }
                }                   
            ]]>
        </mx:Script>    
    </mx:ComboBox>