基于其原始mxml重置组件

时间:2011-12-30 17:10:53

标签: actionscript-3 flex datagrid components mxml

我有一个datagrid,允许用户更改和保存列宽和可见性。我想添加一个重置按钮,将数据网格重置为原始的mxml。这是原始数据网格代码。

<mx:DataGrid x="10" y="47" height="159" width="250" dataProvider="{acOffspring}" id="offspring_dg">
    <mx:columns>
        <mx:DataGridColumn headerText="Tag" visible="true" dataField="animal_ptag" width="121"/>
        <mx:DataGridColumn headerText="Sex" dataField="animal_sex" width="45"/>
        <mx:DataGridColumn headerText="Birth Date" visible="true" dataField="animal_birthdate" width="82"/>
        <mx:DataGridColumn headerText="Name" visible="false" dataField="animal_name" width="82"/>
        <mx:DataGridColumn headerText="Status" visible="false" dataField="status_status" width="82"/>
        <mx:DataGridColumn headerText="Breed" visible="false" dataField="breed_breed" width="82"/>
    </mx:columns>
</mx:DataGrid>

1 个答案:

答案 0 :(得分:0)

我看到了两个选项:

首先是销毁组件并创建它的新实例。像这样:

container.removeChild(offspring_dg);
offspring_dg= new myDataGrid();
container.addChild(offspring_dg);

第二种是以某种方式存储默认值,然后执行循环并重置所有相关属性。像这样:

Column1InitialWidth = offspring_dg.columns[0].width
Column1InitialVisibility = offspring_dg.columns[0].visibility
etc... 

当需要重置它们时,只需反过来做同样的事情:

offspring_dg.columns[0].width = Column1InitialWidth
offspring_dg.columns[0].visibility = Column1InitialVisibility 

如果你处理很多列,我确信这种方法可以封装得更多。