首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Flex DatagridColumn LabelFunction附加参数

Flex DatagridColumn LabelFunction附加参数
EN

Stack Overflow用户
提问于 2011-03-08 06:07:44
回答 3查看 14.4K关注 0票数 0

我有一个定义了labelFunction的datagridcolumn:

代码语言:javascript
复制
private function myLabelFunction(item:Object, column:DataGridColumn):String 
{
  var returnVal:String;
  var nm:NumericFormatter;
  nm.decimalSeparatorTo = ".";
  nm.precision = additionalParameter;

  returnVal = nmTwoDecimals.format(item[column.dataField]);

  if (returnVal == '0.00') 
  {
    returnVal = '';
  }

  return returnVal;
}

是否可以添加一个额外的参数,以便我可以传递我想要使用的格式化程序的属性值?

例如:

代码语言:javascript
复制
private function myLabelFunction(item:Object, column:DataGridColumn, precisionParam:int):String 
    {
      var returnVal:String;
      var nm:NumericFormatter;
      nm.decimalSeparatorTo = ".";
      nm.precision = precisionParam;

      returnVal = nmTwoDecimals.format(item[column.dataField]);

      if (returnVal == '0.00') 
      {
        returnVal = '';
      }

      return returnVal;
    }

谢谢。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-03-08 08:53:47

您必须扩展DataGridColumn类。创建新类后,只需覆盖现有的itemToLabel函数:

代码语言:javascript
复制
public function itemToLabel(data:Object):String
{
        if (!data)
            return " ";

        if (labelFunction != null)
            return labelFunction(data, this);

        if (owner.labelFunction != null)
            return owner.labelFunction(data, this);

        if (typeof(data) == "object" || typeof(data) == "xml")
        {
            try
            {
                if ( !hasComplexFieldName ) 
                data = data[dataField];
                else 
                    data = deriveComplexColumnData( data );
            }
            catch(e:Error)
            {
                data = null;
            }
        }

        if (data is String)
            return String(data);

        try
        {
            return data.toString();
        }
        catch(e:Error)
        {
        }

        return " ";
    }

'return labelFunction(data,this);‘这一行调用labelFunction (还将检查标签函数的所有者datagrid )。“itemToLabel”中的“‘data”是您的对象。你可以在对象中包含你想要的精确值,或者在扩展类中硬编码它(或者注入,或者单例,类var,任何你喜欢的)。

此时,您可以继续并将其作为第三个参数传递给新的labelFunction。

票数 2
EN

Stack Overflow用户

发布于 2011-03-08 08:59:22

这将会起作用:

代码语言:javascript
复制
<DataGridColumn labelFunction="{function(item:Object, column:DataGridColumn):String { return anotherLabelFunction(item,column,2) }}" />

// Elsewhere ... 
function anotherLabelFunction(item:Object,column:DataGridColumn,precision:int):String
{
    // Do your business
}
票数 0
EN

Stack Overflow用户

发布于 2013-01-06 15:58:47

在datagrid列的label函数中,可以使用dataField属性访问已分配的数据域,请参阅以下语法:

“假设您的标签函数名为formatNumbers_LabelFunction”

代码语言:javascript
复制
private function formatNumbers_LabelFunction(item:Object, column:DataGridColumn):String{

    //Write any code logic you want to apply on your data field ;)
    //In this example, I'm using a number formatter to edit numbers

    return myCustomNumberFormatter.format(item[column.dataField]);
}

这样,您就可以使用通用的标签函数来处理显示数据上的一些统一操作

除此之外,您还可以访问数据提供程序中的任何数据字段,只需调用其名称,如下所示:

代码语言:javascript
复制
item.YourFieldName

其中item是标签函数方法中Object类型的第一个参数

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5225855

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档