使用逗号分隔的多个值填充dataGrid中的单元格 - Flex

时间:2011-06-28 12:57:16

标签: xml flex file datagrid populate

我有一个包含此数据的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填充数据网格,并在同一行中用逗号分隔所有商品SububateClassNumber。

categoryList是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 个答案:

答案 0 :(得分:3)

您将不得不编写labelFunction来返回要在列中显示的逗号分隔列表。

阅读这些有关创建custom label function的文档。以下是一些相关细节:

[开始报价]

您可以将标签功能传递给List控件,以提供确定控件中显示的文本的逻辑。标签功能必须具有以下签名:

labelFunction(item:Object):String

Label控件传入的item参数包含列表项对象。该函数必须返回要在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>

[最终报价]

item object参数是您要为其生成标签的dataProvider的元素。

您可以在相关类中指定labelFunction属性:

<mx:DataGridColumn labelFunction="myLabelFunc" />

您也可以使用自定义itemRenderer执行相同的操作。

答案 1 :(得分:0)

这就是我要做的事情:

  1. 为DataGrid中的Subclasses列创建自定义itemRenderer。
  2. 重写set data方法以遍历所有子类并构建逗号分隔的字符串。
  3. 将itemRenderer标签的值设置为逗号分隔的字符串。