在Datagrid中选择CheckBox时选择行

时间:2010-01-05 03:20:28

标签: flex

我有一个包含5列的数据网格。第一列有复选框,其余四列有dataProvider的数据。

我有两个相关的问题: 第一:我希望在单击复选框时选中该行,或者如果我单击多个复选框,则每行应在数据网格中保持选中状态,其中选中了复选框。

第二:如果选择了一行或多行,则也应选中相应的复选框。

我的代码如下:

<mx:DataGrid id="dg_trashContent" allowMultipleSelection="true"
                     verticalGridLines="true"
                     dataProvider="{trashDataProvider}"                      
                     width="100%"                        
                     height="100%"
                     fontFamily="Arial">    
    <mx:columns>
        <mx:DataGridColumn id="col0"
                            textAlign="left"
                            sortable="false"
                            headerText="Name"
                            headerStyleName="datagridHeader"
                            dataField="name">
                    <mx:itemRenderer>
                        <mx:Component>
                            <mx:VBox horizontalAlign="center">
                                <mx:Script source="base.as"/>
                                <mx:Script>
                                    <![CDATA[
                                        import mx.controls.Alert;                                           
                                        public function selectRow():void{

                                        }                                           
                                    ]]>
                                </mx:Script>
                                <mx:CheckBox id="rowCheckBox" click="selectRow();"/>
                            </mx:VBox>
                        </mx:Component>
                    </mx:itemRenderer>
        </mx:DataGridColumn>
        <mx:DataGridColumn id="col1"
                            textAlign="left"
                            sortable="false"
                            headerText="Name"
                            headerStyleName="datagridHeader"
                            dataField="name"/>
        <mx:DataGridColumn id="col2"
                            textAlign="left"
                            sortable="false"
                            headerText="Original Location"
                            headerStyleName="datagridHeader"
                            dataField="absoluteTag"/>                                           
        <mx:DataGridColumn id="col4"
                            textAlign="left"
                            sortable="false"
                            headerText="Date Deleted"
                            headerStyleName="datagridHeader"
                            dataField="date"/>
        <mx:DataGridColumn id="col5"
                            textAlign="right"
                            sortable="false"
                            headerText="Size (mb)"
                            headerStyleName="datagridHeader"
                            dataField="size"/>
    </mx:columns>
</mx:DataGrid>          

我一直想弄清楚我该怎么做呢。但无法得到任何解决方案。有人可以帮我。

此致 Zeeshan

2 个答案:

答案 0 :(得分:0)

我会尝试两件事(如果你还没试过的话):

  1. 确保“selectable”标志设置为true
  2. 单击复选框时 - 将该项添加到datagreids selectedItems数组
  3. 希望这有帮助。

答案 1 :(得分:0)

您需要为复选框编写自定义项呈示器,并通过扩展它来修改DataGrid的代码并覆盖某些方法,如selectItem()

请参阅:http://cookbooks.adobe.com/post_Datagrid_headerRenderer_checkbox_to_select_checkbo-7262.html