2014-10-29 73 views
0

以下是用于员工报告的MXML文件片段。有条件地将AdvancedDataGridColumn添加到AdvancedDataGrid

<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的基本知识。

感谢您的帮助。 - AndyT

回答

0

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

  • 可见财产上之列,这是迄今为止最简单的办法,只要你REPORTTYPE被标记为[绑定]
  • 删除mxml列声明并使用creationComplete事件处理程序<脚本>标记可手动添加使用新列的列。

使用Flex 4:

  • <声明>顶级标签可以让你保持MXML和跳过创建这可以通过在creationComplete处理函数的ID被引用的列的沉闷。
+0

谢谢迈克。我的理解是dataProvider中的字段应该与网格中的AdvancedDataGridColumn相匹配,对吗? 如果这是正确的,那么将可见选项工作在我的情况? – AndyT 2014-10-29 21:18:03

+0

是 - 列将针对每行对象使用属性'dataField',或者您可以指定labelFunction以根据需要格式化数据(例如,可以通过CurrencyFormatter格式化数字美元值)。但是dataField不是必需的。该列的可见属性将一起呈现或跳过列。 – 2014-10-30 20:51:32