Можете ли вы вернуть строку из summaryObjectFunction - PullRequest
4 голосов
/ 15 сентября 2008

Во Flex 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 s не работает.

Ответы [ 2 ]

3 голосов
/ 10 сентября 2009

Если вам нужно получить отображаемую строку, используйте функцию label для advancedDataGridColumn. Это отобразит итоговую строку.

(mx: AdvancedDataGridColumn headerText = "Комментарий" 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;


                }

            }
1 голос
/ 16 сентября 2008

Похоже, что summaryFunction должна вернуть число. Согласно баг-трекеру Adobe , это ошибка в документации:

Комментарий Самера Бхатта:

В документации упоминается, что - Встроенные функции сводки для SUM, MIN, MAX, AVG и COUNT возвращают число, содержащее сводные данные.

Чтобы люди могли понять, но я согласен с вами, что мы должны четко указать, что тип возвращаемого значения должен быть числом.

Мы сохранили его как Объект, так что в будущем будет легко добавить в него больше вещей.

...