Можете ли вы вернуть строку из summaryObjectFunction?
-
09-06-2019 - |
Вопрос
В гибком режиме AdvancedDatGrid
, мы делаем много группировок.Большинство столбцов одинаковы для родителей и детей, поэтому я хотел бы показать первое значение группы в виде сводки, а не MAX, MIN или AVG.
Этот код работает с числовыми, но не текстовыми значениями (без закомментированной строки вы получаете NaN):
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]
}
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
работает Правильно, OfferDescription
нет.
Решение
Похоже, что summaryFunction должна возвращать число.Согласно Трекер ошибок Adobe, это ошибка в документации:
Комментарий Самира Бхатта:
В документации упоминается, что - встроенные сводные функции для суммы, MIN, MAX, AVG и подсчета все возвращают число, содержащее сводные данные.
Итак, люди могут получить представление, но я согласен с вами, что мы должны четко указать, что тип возвращаемого значения должен быть числом.
Мы сохранили его как объект, чтобы в будущем можно было легко добавлять в него новые элементы.
Другие советы
Если вам нужно отобразить строку, используйте функцию label в AdvancedDataGridColumn.Это отобразит итоговую строку.
(mx:AdvancedDataGridColumn headerText="Comment" width="140" dataField="comment" 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;
}
}