Заполнение ячейки в DataGrid несколькими значениями, разделенными запятыми - Flex - PullRequest
1 голос
/ 28 июня 2011

У меня есть XML-файл с этими данными.

<resultSet> 
<MerchandiseAssortmentCategory>
                                <merchandiseAssortmentCategoryId>275</merchandiseAssortmentCategoryId>
                                <merchandiseAssortmentCategoryName>D21 Plywood</merchandiseAssortmentCategoryName>
                                <merchandiseSubordinateClasses>
                                                <merchandiseSubordinateClass>
                                                                <merchandiseSubordinateClassNumber>2</merchandiseSubordinateClassNumber>
                                                                <merchandiseSubordinateClassDescription>SHEATHING</merchandiseSubordinateClassDescription>
                                                </merchandiseSubordinateClass>
                                                <merchandiseSubordinateClass>
                                                                <merchandiseSubordinateClassNumber>3</merchandiseSubordinateClassNumber>
                                                                <merchandiseSubordinateClassDescription>WAFERBOARD</merchandiseSubordinateClassDescription>
                                                </merchandiseSubordinateClass>
                                                <merchandiseSubordinateClass>
                                                                <merchandiseSubordinateClassNumber>4</merchandiseSubordinateClassNumber>
                                                                <merchandiseSubordinateClassDescription>SANDED</merchandiseSubordinateClassDescription>
                                                </merchandiseSubordinateClass>
                                </merchandiseSubordinateClasses>
</MerchandiseAssortmentCategory>
</resultSet> 

Мне нужно заполнить сетку данных именем merchandiseAssortmentCategoryName и всеми его товарами, разделенными запятыми в одной строке.

список категорий, который является поставщиком данных для dataGrid, определяется следующим образом:

this.categoryList= evt.result.resultSet.MerchandiseAssortmentCategory;

, и вот как определяется dataGrid

<mx:DataGrid x="466" y="73" width="192" height="225" 
        dataProvider="{categoryList}" 
        verticalScrollPolicy="on" 
        id="categories"
        rowCount="10" enabled="true">
        <mx:columns>
            <mx:DataGridColumn headerText="Category name" dataField="merchandiseAssortmentCategoryName"/>
            <mx:DataGridColumn headerText="Subclasses" dataField="merchandiseSubordinateClasses.merchandiseSubordinateClass.merchandiseSubordinateClassNumber"/>

            </mx:columns>
    </mx:DataGrid>

Когда я запускаюэто, только название категории заполняется.номер подчиненного класса просто пуст.Помогите с этим.Спасибо

Ответы [ 2 ]

3 голосов
/ 28 июня 2011

Вам нужно написать функцию labelFunction, чтобы вернуть разделенный запятыми список, который вы хотите отобразить в столбце.

Прочтите эти документы по созданию пользовательской функции метки .Вот некоторые важные сведения:

[Начать цитату]

Вы можете передать функцию метки элементу управления List, чтобы обеспечить логику, определяющую текст, который появляется в элементе управления.Функция метки должна иметь следующую подпись:

labelFunction(item:Object):String

Параметр элемента, передаваемый элементом управления Label, содержит объект элемента списка.Функция должна возвращать строку для отображения в элементе управления List.

Примечание. Большинство подклассов ListBase также принимают свойство labelFunction с подписью, описанной выше.Для элементов управления DataGrid и DataGridColumn подпись метода имеет вид labelFunction (item: Object, dataField: DataGridColumn): String, где item содержит объект элемента DataGrid, а dataField указывает столбец DataGrid.

....

<mx:Script><![CDATA[
    public function myLabelFunc(item:Object):String {
        return item.data + ", " + item.label; 
    }
]]></mx:Script>

[End Quote]

Параметр объекта item является элементом dataProvider, для которого вы хотите сгенерировать метку.

Вы можете указать свойство labelFunction нарассматриваемый класс:

<mx:DataGridColumn labelFunction="myLabelFunc" />

Вы также можете сделать то же самое с пользовательским itemRenderer.

0 голосов
/ 28 июня 2011

Вот что я бы сделал:

  1. Создание пользовательского itemRenderer для столбца «Подклассы» в DataGrid.
  2. Переопределите метод set data, чтобы пройти через все ваши подклассы и построить строку с разделителями-запятыми.
  3. Установите значение метки itemRenderer равным строке с запятой.
...