Können Sie einen String aus einem summaryObjectFunction zurückkehren
-
09-06-2019 - |
Frage
In einer Flex AdvancedDatGrid
, sind wir viel Gruppierung zu tun. Die meisten Spalten sind die gleichen für die Eltern und für die Kinder, so möchte ich den ersten Wert der Gruppe als Zusammenfassung zeigen, anstatt die MAX, MIN oder AVG
Dieser Code funktioniert auf numerische aber nicht textuelle Werte (ohne die Kommentarzeile erhalten Sie Nans):
private function firstValue(itr:IViewCursor,field:String, str:String=null):Object
{
//if(isNaN(itr.current[field])) return 0 //Theory: Only works on Numeric Values?
return itr.current[field]
}
Die XML:
(mx:GroupingField name="Offer")
(mx:summaries)
(mx:SummaryRow summaryPlacement="group")
(mx:fields)
(mx:SummaryField dataField="OfferDescription" label="OfferDescription" summaryFunction="firstValue"/)
(mx:SummaryField dataField="OfferID" label="OfferID" summaryFunction="firstValue"/)
(/mx:fields)
(/mx:SummaryRow)
(/mx:summaries)
(/mx:GroupingField)
OfferID
Arbeit korrekt, OfferDescription
s dies nicht tun.
Lösung
Es sieht aus wie die summaryFunction eine Zahl zurückgeben muss. Nach dem Adobe Bug-Tracker , ist es ein Fehler in der Dokumentation:
Kommentar von Sameer Bhatt:
In der Dokumentation ist es, dass erwähnt - Die Einbau-Auswertungsfunktionen für SUM, MIN, MAX, AVG, COUNT und alle geben eine Zahl, die die Zusammenfassungsdaten enthält.
So können die Leute eine Vorstellung bekommen, aber ich stimme mit Ihnen überein, dass wir klar erkennen lassen, dass der Rückgabetyp eine Zahl sein sollte.
Wir halten es als Objekt, so dass es in der Zukunft leicht sein wird, mehr Dinge in hinzufügen.
Andere Tipps
Wenn Sie eine Zeichenfolge bekommen müssen dann die labelfunction auf dem Advanced verwenden zu zeigen. Dies wird die Zusammenfassungszeile machen.
(mx: Advancedheadertext = "Kommentar" width = "140" datafield = "Kommentar" labelfunction = "formatColumn" /)
private function getNestedItem(item:Object):Object {
try {
if (item.undefined[0]) {
item = getNestedItem(item.undefined[0]);
}
} catch (e:Error) {
// leave item alone
}
return item;
}
private function formatColumn(item:Object, column:AdvancedDataGridColumn):String {
var output:String;
// If this is a summary row
if (item.GroupLabel) {
item = getNestedItem(item);
}
switch (column.dataField) {
case 'comment':
return item.comment;
}
}