2015-04-28 56 views
0

我試圖實現與這個類中定義與頁腳一個DataGrid:FLEX - 自定義組件頁腳-的Datagrid - ItemRenderer的 - 「一組數據」功能不能正常工作

https://github.com/ncdc/flex-footer-datagrid

它的工作完美。儘管如此,在第二步中,我嘗試使用此包在一列上實現一個itemrenderer,以顯示具有特定樣式的值。

這裏我的代碼

 <footerDataGrid:FooterDataGrid 
      id="dg_imActivity" width="100%" 
      dropEnabled="true" 
      dragDrop="model.checkIfActivityExixts(event)" 
      dataProvider="{grant!=null?model.activities.grantItems:null}" 
      editable="true" 
      itemEditEnd="EditBudgetValue(event)" 
      rowCount="{grant!=null?dg_imActivity.dataProvider.length + 2:6}" 
      > 

      <footerDataGrid:columns> 
       <mx:DataGridColumn headerText="Title" dataField="title" showDataTips="true" dataTipField="title" editable="false"/> 
       <mx:DataGridColumn headerText="Type" dataField="type" showDataTips="true" dataTipField="type" editable="false"/> 
       <mx:DataGridColumn headerText="Pr. Area" dataField="prioAreaName" showDataTips="true" dataTipField="prioAreaName" editable="false"/> 
       <mx:DataGridColumn headerText="Unit" dataField="unitName" showDataTips="true" dataTipField="unitName" editable="false"> 
         <mx:itemRenderer> 
          <fx:Component>         
           <mx:HBox paddingLeft="2" horizontalScrollPolicy="off"> 
            <fx:Script> 
             <![CDATA[ 
              import mx.controls.Alert; 
              import mx.states.SetStyle; 

              override public function set data(value:Object) : void { 
               super.data = value; 

               if(data.unitName != outerDocument.user.profile.organ.name) { 
                setStyle("color",0xFF0000); 
                setStyle("fontWeight", "bold"); 
               }else{ 
                setStyle("color",0xffffff); 
                setStyle("fontWeight", "normal"); 
               } 

              } 
             ]]> 
            </fx:Script> 
            <mx:Label text="{data.unitName}" width="100%"/> 
           </mx:HBox> 
          </fx:Component> 
         </mx:itemRenderer> 


       </mx:DataGridColumn> 
       <mx:DataGridColumn headerText="Value" dataField="budgetValue" id="budgetValue" showDataTips="true" dataTipField="budgetValue" editable="true"/> 
      </footerDataGrid:columns> 

      <footerDataGrid:footer> 
       <footerDataGrid:SummaryFooter> 
        <footerDataGrid:columns> 
         <footerDataGrid:SummaryColumn label='Total'/> 
         <footerDataGrid:SummaryColumn /> 
         <footerDataGrid:SummaryColumn /> 
         <footerDataGrid:SummaryColumn />               
         <footerDataGrid:SummaryColumn operation='sum' precision='2'/> 
        </footerDataGrid:columns> 
       </footerDataGrid:SummaryFooter> 


       <footerDataGrid:SummaryFooter> 
        <footerDataGrid:columns> 
         <footerDataGrid:SummaryColumn label='Remaining Budget'/> 
         <footerDataGrid:SummaryColumn /> 
         <footerDataGrid:SummaryColumn /> 
         <footerDataGrid:SummaryColumn />                
         <footerDataGrid:SummaryColumn labelFunction='remainingBudgetActivity' dataColumn='{budgetValue}'/> 
        </footerDataGrid:columns> 
       </footerDataGrid:SummaryFooter> 

      </footerDataGrid:footer> 
     </footerDataGrid:FooterDataGrid> 

我獲得與itemRenderer的一個錯誤。

ReferenceError: Error #1069: Property unitName not found on mx.controls.dataGridClasses.DataGridColumn and there is no default value. 

abel顯示不帶風格。所有都被正確定義。顯然,方法集data()被正確調用,但它無法檢索數據對象,我不知道原因。除此之外,我已經嘗試使用默認的數據網格,它正在工作。

請問如何解決這個問題?我需要使用這個包,因爲我需要在數據網格中顯示頁腳。

回答

0

我不知道爲什麼,但這個包我要爲了添加一個測試,看看對象屬性存在:

if("unitName" in data){ 
    if(data.unitName != outerDocument.user.profile.organ.name) { 
     setStyle("color",0xFF0000); 
     setStyle("fontWeight", "bold"); 
    }else{ 
     setStyle("color",0x000000); 
     setStyle("fontWeight", "normal"); 
    } 
}    

而現在所有的工作。這很奇怪,因爲使用默認的數據網格,沒有必要進行測試。