如何从datagrid中的comboBox itemrenderer获取selectedItem并在另一列中显示值

时间:2012-01-21 08:34:16

标签: actionscript-3 flex datagrid flex4.5 itemrenderer

我在datagrid中遇到了itemRender的问题。实际上我有一个dataProvider,它在我的数据网格中填充了2列。第一列数据在TextInput中呈现,第二列数据在comboBox中呈现。我现在想要的是当我从网格中的行的组合框中选择一个元素时。我想在第一列的同一行的相应TextInput中显示selectedItem值。

我想知道是否有任何datagrid属性可以帮助我这样做?或者,如果有人可以指导我在comboBox的更改处理程序中编写什么代码?请参阅下面的代码。

我需要帮助。请帮我解决这个问题。

    <mx:DataGrid id="myDG" rowHeight="25" dataProvider="{my_arrayColl}" 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">


                                        <fx:Script>
                                            <![CDATA[
                                                import mx.controls.Alert;
                                                import mx.controls.Text;

                                                import spark.events.TextOperationEvent;

                                                protected function label_txt_changeHandler(event:TextOperationEvent):void
                                                {
                                                    data.LBL = label_txt.text;
                                                }   


                                            ]]>
                                        </fx:Script>

                                        <s:TextInput id="label_txt" change="label_txt_changeHandler(event)" 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>
                                        <mx:ComboBox height="80%" change="mycb_changeHandler(event)" labelField="ALIAS" dataProvider="{outerDocument.mycb_array}">
                                            <fx:Script>
                                                <![CDATA[
                                                    import mx.events.ListEvent;

                                                    protected function mycb_changeHandler(event:ListEvent):void
                                                    {

                                                    }

                                                ]]>
                                            </fx:Script>

                                        </mx:ComboBox>
                                </fx:Component>
                            </mx:itemRenderer>
                        </mx:DataGridColumn>

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

1 个答案:

答案 0 :(得分:0)

如果我理解正确,您需要根据itemRenderer中ComboBox组件中的选择更新DataGrid的数据提供者。您可以通过转到所有者对象并更新数据中的相应对象来实现。只需将itemRenderer保存在单独的mxml中,并将调试指针放在label_txt_changeHandler方法中。

希望有所帮助......