2014-10-29 2 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

Есть несколько различных способов, вы можете сделать это:

  • видна свойство на колонке, это, безусловно, самое простое решение, до тех пор, как ваш отмечен Тип уведомления [Bindable]
  • удалите объявления столбца mxml и используйте событие creationComplete для обработчика в сценарии < >, чтобы вручную добавить ваши столбцы с помощью нового.

С Flex 4:

  • < декларации > верхнего уровня тегов позволит сохранить MXML и пропустить занудство создания столбцов, которые могут быть ссылки по идентификатору в обработчике creationComplete.
+0

Спасибо, Майк. Мое понимание полей в dataProvider должно совпадать с AdvancedDataGridColumn в сетке, это правильно? Если это правильно, то видимый вариант будет работать в моем случае? – AndyT

+0

Да - столбец будет использовать свойство dataField для объекта для каждой строки, или вы можете указать labelFunction для форматирования данных по мере необходимости (например, значение доллара может быть отформатировано через CurrencyFormatter). Однако DataField не является обязательным требованием. Видимое свойство столбца будет либо отображать, либо пропускать столбец вместе. –

Смежные вопросы