我有一个datagridcolumn,其中定义了labelFunction:
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;
}
是否可以添加一个额外的参数,以便我可以传递我打算使用的格式化程序的属性值?
例如:
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;
}
感谢。
答案 0 :(得分:2)
您必须扩展DataGridColumn类。创建新类后,只需覆盖现有的itemToLabel函数:
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的labelfunction)。 'itemToLabel'中的'data'是您的对象。您可以在对象中包含所需的精度值,也可以在扩展类中对其进行硬编码(或者注入,或单例,类var,无论您喜欢什么)。
此时,您可以继续将其作为第三个参数传递给新的labelFunction。
答案 1 :(得分:0)
这样可行:
<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
}
答案 2 :(得分:0)
在datagrid列的label函数中,可以使用dataField属性访问指定的数据字段,请参阅以下语法:
“假设您的标签功能称为formatNumbers_LabelFunction”
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]);
}
这样,您可以使用通用标签功能来处理显示数据的某些统一操作
除此之外,您还可以通过调用其名称来访问数据提供程序中的任何数据字段:
item.YourFieldName
其中item是标签函数方法
中第一个[类型为Object]的参数