错误 - 尝试选中复选框时,在数据网格中选择了一行

时间:2010-01-06 19:25:52

标签: flex

我希望在选择数据网格的行时选中复选框(位于数据网格中)。为此,我写了以下代码:

<mx:DataGrid id="dg_trashContent" allowMultipleSelection="true"
                         verticalGridLines="true"
                         dataProvider="{trashDataProvider}"                      
                         width="100%"                        
                         height="240"
                         fontFamily="Arial" y="23"
                         selectable="true"> 
        <mx:columns>
            <mx:DataGridColumn id="col0"
                                textAlign="left"
                                sortable="false"
                                headerText=""
                                headerStyleName="datagridHeader"
                                dataField="name"
                                width="20">
                        <mx:itemRenderer> 
                                <mx:Component> 
                                        <mx:VBox paddingLeft="5"> 
                                                <mx:CheckBox  selected="{data.isRowSelected}" 
                                                            click="outerDocument.updateSelectedRowFlag(event);" 
                                                            change="{this.selected = data.isRowselected; }"/> 
                                        </mx:VBox> 
                                </mx:Component> 
                        </mx:itemRenderer> 
                </mx:DataGridColumn> 
            <mx:DataGridColumn id="col1"
                                textAlign="left"
                                sortable="true"
                                headerText="Name"
                                headerStyleName="datagridHeader"
                                dataField="name"/>

但是我在checkBox中使用的“selected”属性出错了。错误说: 通过具有静态类型TrashContainer_inlineComponent1的引用访问可能未定义的属性。

你能不能看到我在这里做错了什么。

此致 Zeeshan

1 个答案:

答案 0 :(得分:0)

您可以使用此渲染器

<mx:DataGridColumn id="col0" 
                            textAlign="left" 
                            sortable="false" 
                            headerText="" 
                            dataField="key" 
                            width="20"> 
                    <mx:itemRenderer>  
                            <mx:Component>  

                                    <mx:VBox paddingLeft="5">  
                                    <mx:Script>
                                        <![CDATA[
                                            import mx.controls.DataGrid;

                                            override public function set data(value:Object):void
                                            {
                                                super.data = value;
                                                ckb.selected = data.isRowSelected;

                                                if(data.isRowSelected)
                                                    (parent.parent as DataGrid).selectedItem = data;
                                            }
                                        ]]>
                                    </mx:Script>
                                            <mx:CheckBox id="ckb" />
                                    </mx:VBox>  
                            </mx:Component>  
                    </mx:itemRenderer>  
            </mx:DataGridColumn>  

其中isRowSelected是集合中数据对象的一部分。

我希望这可以有用。