有条件地将AdvancedDataGridColumn添加到AdvancedDataGrid

时间:2014-10-29 19:11:00

标签: flex mxml

以下是用于员工报告的MXML文件的片段。

<mx:AdvancedDataGrid id="adgID" 
    dataProvider="{empList}"
    width="720" height="450"
    defaultLeafIcon="{null}" 
    selectionColor="#B5B2B2" rollOverColor="#6AB9F7"
    showEffect="{}">
    <mx:columns >               
        <mx:AdvancedDataGridColumn  dataField="empId" headerText="Employee ID"/>
        <mx:AdvancedDataGridColumn  dataField="dept" headerText="Department" />
        <mx:AdvancedDataGridColumn  dataField="empLastName" headerText="Last Name" />
        <mx:AdvancedDataGridColumn  dataField="empFirstName" headerText="First Name" />
    </mx:columns>
</mx:AdvancedDataGrid>

我想在几列不同的报告中使用相同的MXML文件。这4列对于所有报告都是通用的,但其中很少有一些额外的报告。我能够更改empList(网格的dataProvider),但我不确定如何为此代码添加额外的列,因此不会为每个报告显示所有内容。

基本上我想这样做,

<mx:AdvancedDataGrid id="adgID" 
    dataProvider="{empList}"
    width="720" height="450"
    defaultLeafIcon="{null}" 
    selectionColor="#B5B2B2" rollOverColor="#6AB9F7"
    showEffect="{}">
    <mx:columns >               
        <mx:AdvancedDataGridColumn  dataField="empId" headerText="Employee ID"/>
        <mx:AdvancedDataGridColumn  dataField="dept" headerText="Department" />
        <mx:AdvancedDataGridColumn  dataField="empLastName" headerText="Last Name" />
        <mx:AdvancedDataGridColumn  dataField="empFirstName" headerText="First Name" />
    <!------------------------ Need to add this part ------------------------>  
        if(reportType == 1) {
            <mx:AdvancedDataGridColumn  dataField="empDOB" headerText="DOB" />
        }
        if(reportType == 2) {
            <mx:AdvancedDataGridColumn  dataField="empSalary" headerText="Salary" />
        }
    <!------------------------ Need to add this part ------------------------>
    </mx:columns>
</mx:AdvancedDataGrid>

我该怎么做?我们正在使用Flex 3.我对Flex有非常基本的了解。

感谢您的帮助。   - 安迪特

1 个答案:

答案 0 :(得分:0)

有几种不同的方法可以做到这一点:

    列上的
  • 可见属性,这是迄今为止最简单的解决方案,只要您的reportType标记为[Bindable]
  • 删除mxml列声明,并将 creationComplete 事件用于&lt; script&gt;中的处理程序标记以使用新手动添加列。

使用Flex 4:

  • &LT;声明&GT;顶级标记将允许您保留mxml并跳过创建列的繁琐,这些列可以通过creationComplete处理程序中的id引用。