2013-03-22 2 views
0

Что-то, что работаетAdvancedDataGridColumn менее развит, чем GridColumn?

<s:GridColumn dataField="country.code" headerText="Country Code"/> 

то, что не

<mx:AdvancedDataGridColumn dataField="country.code" headerText="Country Code" width="50" /> 

У нас есть еще много гранд-ребенок атрибут как country.code, и мы должны использовать AdvancedDataGrid. Глядя глубже в функция set dataField (значение: String) обоих GridColumn, только Normal Grid поддерживает точку ".".

Мы не хотим использовать labelFunction, поскольку у нас есть 50+ столбцов, подобных этому ... Если есть способ расширить Advanced Grid Column для поддержки точки?

Не могли бы вы предложить решение? Спасибо

+0

Вы можете заполнить свой массив ArrayCollection для dataProvider объектами значений, удерживая свойство для каждого поля данных, которое вы используете в ADG. Уверенно, вам придется разбирать все данные, прежде чем использовать их. – michaPau

ответ

2

AdvancedDataGrid - это компонент mx и, следовательно, он старше, чем Spark DataGrid. Таким образом, Spark DataGrid просто привносит новые функции (по сравнению со старым mx DataGrid).

Если вы хотите эту функцию в ADG у вас есть два подхода:

  1. над головой Apache Flex JIRA и зарегистрировать «улучшение» проблемы. Может быть, вам повезет, и кто-то подберет это. Но я бы не стал рассчитывать на это: ADG был передан компанией Adobe (давно), и по сравнению с другими компонентами это дрянная часть кода; вам нелегко будет найти кого-то, кто готов погрузиться в эту выгребную яму.
  2. Возьмите дело в свои руки. Клонировать репозиторий Apache Flex; добавить желаемую функциональность; отправьте свой патч сообществу Apache Flex. Если у вас будет готовое решение, они будут очень быстро реагировать.
+0

Вот связанная ошибка: https://issues.apache.org/jira/browse/FLEX-33248. Я упоминаю это здесь как пример того, как я сам исправил связанную проблему и представил ее сообществу. Код теперь входит в состав Flex 4.9. – RIAstar

+0

Я не думаю, что лидеры одобрят переход от Flex4.6 к Flex4.9 легко ... Таким образом, нет простого решения, верно? Думаю, мне придется немного поработать. Спасибо за усилия сообщества –

+0

Это именно тот аргумент, который вы могли бы использовать, чтобы убедить лидеров «сделать ход». Apache Flex собирается запустить новую (младшую) версию каждые несколько месяцев. Зачем придерживаться старой версии и не использовать улучшения в новых? – RIAstar

1

Мы фактически добавили эту поддержку в наш Extended version of AdvancedDataGrid. Решение довольно простое, просто добавьте AdvancedDataGridColumn (есть некоторые другие вещи, о которых нужно беспокоиться, например, о сортировке, а также о фильмах и т. Д., Но идея такая, как показано ниже). Мы добавили кучу вещей для поддержки встроенных форматы и т. д., поэтому приведенный ниже код - это просто код psuedo для этой конкретной проблемы, а не фактический код из нашей кодовой базы.

public class ExtendedAdvancedDataGridColumn{ 


      public var enableNestedPropertySupport:Boolean=true; 
      public override function itemToLabel(data:Object, withFormatting:Boolean=true):String 
      { 
       if(enableNestedPropertySupport){ 
        return UIUtils.resolveExpression(data,dataField); 
       } 
       else{ 
        return super.itemToLabel(data, withFormatting); 
       } 
      } 

     }