【问题标题】:Format Rows of Datagrid differently in Flex 4在 Flex 4 中以不同方式格式化 Datagrid 的行
【发布时间】:2011-08-29 10:24:48
【问题描述】:

我在我的数据网格的一列中使用以下 itemrenderer。但是我想以不同的方式格式化数据网格的每一行。该列由数字组成,但有些需要格式化为数字,而另一些则需要格式化为货币等。另请注意,我还有一个由 0 和 1 组成的附加列,其中 0 表示它应该格式化为数字,1 表示它应该是格式化为货币。

<?xml version="1.0" encoding="utf-8"?>
<s:MXDataGridItemRenderer xmlns:fx="http://ns.adobe.com/mxml/2009" 
                          xmlns:s="library://ns.adobe.com/flex/spark" 
                          xmlns:mx="library://ns.adobe.com/flex/mx" 
                          focusEnabled="true">

    <s:Label id="lblData" top="0" left="0" textAlign="center" verticalAlign="middle" right="0" bottom="0" text="{dataGridListData.label}"  backgroundColor="#EDFB09"/>

    <s:Rect left="0" right="0" top="0" bottom="0">
        <s:stroke>
            <s:SolidColorStroke color="0x000000" weight="1"/>
        </s:stroke>
    </s:Rect>

    <fx:Script>
        <![CDATA[

        ]]>
    </fx:Script>

</s:MXDataGridItemRenderer>

关于如何实现这样一个功能的任何帮助,我试图在 itemrenderer 的一个函数中使用 dataGridListData.label 但它给出了错误。

帮忙谢谢

【问题讨论】:

  • 这是 spark datagrid 还是 mx one?
  • 它是一个 MX 数据网格。使用 spark 数据网格更容易吗?
  • 答案会有所不同:)

标签: apache-flex datagrid flex4 itemrenderer


【解决方案1】:

dataGridListData 对象应该已经包含您需要的所有信息: 列索引、行索引、数据字段。

在简单的情况下,使用“elvis-operator”(?作为 if 语句的简写)非常方便:

(条件)? true-block: else-block

一些例子: color="{(dataGridListData.rowIndex % 2 == 0) ? #00ff00 : #0000ff}" (用于交替行颜色) text="{(dataGridListData.dataField == "coolField") ? 'Cool!': 'Uncool'}"

【讨论】:

  • 所以基本上我可以在一个 AS 文件中创建我所有的格式化程序(CurrencyFormatter、NumberFormatter)?然后在itemrenderer中调用then?
【解决方案2】:

可以通过实现 IDataRenderer、IDropInListItemRenderer 来创建自定义渲染器。

ManageFilterValueEditor extends VBox implements IDataRenderer, IDropInListItemRenderer

这可以访问 _listdata 和 _data。列表数据代表行。在 setData 我们可以访问该行作为

override public function set data(value:Object):void {
            _data = value;
            if(_listData!=null){
                     var col:DataGridColumn=((_listData.owner as DataGrid).columns[_listData.columnIndex] as DataGridColumn);
                    removeAllChildren();

//根据列,可以适当格式化

【讨论】:

    猜你喜欢
    • 2011-08-26
    • 2022-11-01
    • 2022-10-01
    • 2014-11-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-18
    • 1970-01-01
    相关资源
    最近更新 更多