0

在我的代码中,datagrid 不会触发 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}, {用户:'Yogender Kumar Sharma', cam:false, mic:true, sound:true}]);`

4

1 回答 1

0

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

dataChange 事件通常在 itemRenderer 内部使用,以在 itemRenderer 的数据属性更改时修改其显示内容。itemRenderer 中的 data 属性将表示 DataGrid 的 dataProvider 的单个元素。

除非您将 DataGrid 用作 itemRenderer——这是可能的但不寻常的——我不希望 DataGrid 的数据属性发生变化;因此 dataChange 事件永远不会从 DataGrid 中触发。

于 2013-08-26T13:35:01.873 回答