2008-09-15 57 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; 


       } 

      }