Flex DatagridColumn LabelFunction-Zusätzliche Parameter
Habe ich ein datagridcolumn-wo eine labelFunction definiert ist:
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;
}
Wäre es möglich, fügen Sie einen zusätzlichen parameter, so dass ich übergeben Sie die Eigenschaft Werte für den formatter, die ich beabsichtige zu verwenden?
Wie zum Beispiel:
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;
}
Dank.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Müssten Sie verlängern die DataGridColumn-Klasse. Nach der Erstellung Ihrer neuen Klasse einfach überschreiben Sie die vorhandenen itemToLabel Funktion:
Die Zeile 'return labelFunction(data, this);' das ist, was fordert die labelFunction - (wird auch prüfen, die Besitzer datagrid für eine labelfunction). 'Daten' in 'itemToLabel' ist das Objekt. Sie könnte entweder der precision-Wert Sie wollen in das Objekt oder codieren Sie Sie in der erweiterten Klasse (oder Spritzen, oder eine singleton-Klasse var, was auch immer Sie möchten).
An dieser Stelle können Sie gehen Sie vor und übergeben Sie als Dritten parameter an Ihre neue labelFunction.
In Ihrem label-Funktion für die datagrid-Spalte, können Sie auf das zugewiesene Datenfeld, indem Sie die dataField-Eigenschaft finden Sie in der folgenden syntax unter:
"angenommen, dass Ihre label-Funktion aufgerufen wird formatNumbers_LabelFunction"
Diese Weise, können Sie eine generische Bezeichnung Funktion behandeln einige unified-Operationen auf dem angezeigten Daten
Und außerdem, können Sie auch Zugriff auf alle Daten-Feld ist im data provider, indem Sie einfach den Aufruf der Namen wie diese:
wobei Element ist der erste parameter [Typ Object] in Ihrem label-Funktion Methode
Dieser funktionieren würde: