2008-09-15 44 views
4

在Flex AdvancedDatGrid中,我们做了很多分组。大多数专栏对于父母和孩子来说都是一样的,所以我想将该组的第一个值显示为摘要而不是MAX,MIN或AVG你能从summaryObjectFunction返回一个字符串吗?

此代码适用于数字,但不适用文本值(不包括注释行你得到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,说自己。

+0

http://flexgeek.wordpress.com/2007/06/是我进行研究的地方 – Dave 2008-09-15 18:52:25

回答

1

它看起来像summaryFunction必须返回一个数字。按照Adobe bug tracker,这是文件中的错误:

从长Sameer Bhatt的评论:

在文件中提到, - 内置的SUM,MIN,MAX汇总函数, AVG和COUNT都会返回一个包含摘要数据的数字。

所以人们可以得到一个想法,但我同意你的观点,我们应该明确提到返回类型应该是一个数字。

我们将它作为一个对象保存下来,以便在将来添加更多事物时很容易。

3

如果您需要获取要显示的字符串,请在advancedDataGridColumn上使用labelfunction。这将呈现摘要行。

(MX:的AdvancedDataGridColumn HEADERTEXT = “注释” WIDTH = “140” 的dataField = “评论” 的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; 


       } 

      }