Flex DataGrid DataChange事件无法正常工作

时间:2013-08-26 07:49:26

标签: flex

在我的代码中,datagrid不是fire datachanged事件。 任何人都可以帮我找到我错的地方。为了帮助,代码如下所示。

                       <mx:DataGrid id="userlist" 
                                 horizontalGridLines="true"
                                 horizontalGridLineColor="0xeeeeee"
                                 dataChange="dataChanged();" 

                                 editable="true" 
                                 change="changegrid(event);" 
                                 width="100%" 
                                 height="250" borderColor="#FF0000" borderStyle="solid"  
                                 borderThickness="1"> 

                    <mx:columns >
                        <mx:DataGridColumn dataField="User" editable="false" headerText="User" />
                        <mx:DataGridColumn dataField="cam" editable="true" width="24" itemEditor="mx.controls.CheckBox" editorDataField="cam" textAlign="center" headerText="M"> 
                            <mx:itemRenderer>
            <mx:Component >
                               <mx:Box horizontalAlign="center" verticalAlign="middle" height="100%" width="100%">
                                    <mx:CheckBox id="chb" click="data.cam=!data.cam" selected="{data.cam}"/>
                                </mx:Box>
            </mx:Component>
                            </mx:itemRenderer>
                            <mx:headerRenderer>
                            <mx:Component>
                                <mx:Image width="16" height="16" toolTip="Change Cam Status" source="@Embed(source='icons/webcam_start.png')" verticalAlign="middle" horizontalAlign="center"/>
                            </mx:Component>
                            </mx:headerRenderer>
                        </mx:DataGridColumn>
                        <mx:DataGridColumn dataField="mic" editable="false" itemEditor="mx.controls.CheckBox" editorDataField="mic"  width="24" textAlign="center" headerText="C">
                            <mx:itemRenderer>
            <mx:Component >
                               <mx:Box horizontalAlign="center" verticalAlign="middle" height="100%" width="100%">
                                    <mx:CheckBox id="chb1"  click="data.mic=!data.mic" selected="{data.mic}" />
                                </mx:Box>

            </mx:Component>
                            </mx:itemRenderer>                                
                            <mx:headerRenderer>
                            <mx:Component>
                                <mx:Image width="16" height="16" toolTip="Change Microphone Status " source="@Embed(source='icons/microphone_plus.png')" verticalAlign="middle" horizontalAlign="center"/>
                            </mx:Component>
                            </mx:headerRenderer>                                
                        </mx:DataGridColumn>
                        <mx:DataGridColumn dataField="sound" editable="false" itemEditor="mx.controls.CheckBox" editorDataField="sound" width="24" textAlign="center" headerText="R1"> 
                            <mx:itemRenderer>
            <mx:Component >
                               <mx:Box horizontalAlign="center" verticalAlign="middle" height="100%" width="100%">
                                    <mx:CheckBox id="chb2" click="data.sound=!data.sound" selected="{data.sound}"/>
                                </mx:Box>

            </mx:Component>
                            </mx:itemRenderer>                                
                            <mx:headerRenderer>
                            <mx:Component>
                                <mx:Image width="16" height="16" 
    toolTip="Turn Sound on/off " source="@Embed(source='icons/audio_volume_high.png')"       verticalAlign="middle" horizontalAlign="center"/>
                            </mx:Component>
                            </mx:headerRenderer>                            
                        </mx:DataGridColumn>
                    </mx:columns>

                   </mx:DataGrid>

我正在使用以下数据     private var plist:ArrayList = new ArrayList(                     [{User:'Ravi Kanchan Sharma',cam:true,mic:true,sound:true},                     {User:'Vijay Anand Sharma',cam:true,mic:false,sound:true},                     {User:'Yogender Kumar Sharma',cam:false,mic:true,sound:true}]);`

1 个答案:

答案 0 :(得分:0)

要从组件触发dataChange事件,需要更改“数据”值。从您的代码中不清楚为什么DataGrid的数据值会发生变化。

每当itemRenderer的data属性发生更改时,dataChange事件通常在itemRenderer中用于修改其显示内容。 itemRenderer中的data属性表示DataGrid的dataProvider的单个元素。

除非你使用DataGrid作为itemRenderer - 这是可能的但不寻常 - 我不希望DataGrid的data属性改变;因此,dataChange事件永远不会从DataGrid中触发。