2011-09-25 2 views
1

숫자가있는 DataGrid 열이 있습니다. 사용 방법 :% 기호를 추가하고 색을 지정하십시오.

1. add a '%' sign at the end of each number in the column 

2. make the color either red or green depending on if the number is less than or greater than 0, respectively. 

내가 모두 1 또는 다른 아니지만을 할 수있었습니다. 다음은 # 2이지만 # 1이 아닌 것입니다.

// my datagrid column: 
<mx:AdvancedDataGridColumn dataField="change" itemRenderer="itemrenderers.ColorRenderer" /> 

// my item renderer: 
package itemrenderers 
{ 
import mx.controls.Label; 
import mx.controls.dataGridClasses.DataGridListData; 
public class ColorRenderer extends Label { 
    override protected function updateDisplayList(unscaledWidth:Number, unscaledHeight:Number):void 
    { 
     super.updateDisplayList(unscaledWidth, unscaledHeight); 
     if (data && data[DataGridListData(listData).dataField] < 0) 
     { 
      setStyle("color", 0xA41330); //red 
     } 
     else 
     { 
      setStyle("color", 0x59A336); //green 
     } 
    } 
} 
} 

답변

1

코드에서 라벨의 색상을 올바르게 지정하는 경우이 방법이 효과적입니다.

// my datagrid column: 
<mx:AdvancedDataGridColumn dataField="change" itemRenderer="itemrenderers.ColorRenderer" /> 

// my item renderer: 
package itemrenderers 
{ 
import mx.controls.Label; 
import mx.controls.dataGridClasses.DataGridListData; 
public class ColorRenderer extends Label { 
    override protected function updateDisplayList(unscaledWidth:Number, unscaledHeight:Number):void 
    { 
     super.updateDisplayList(unscaledWidth, unscaledHeight); 
     if (data && data[DataGridListData(listData).dataField] < 0) 
     { 
      setStyle("color", 0xA41330); //red 
     } 
     else 
     { 
      setStyle("color", 0x59A336); //green 
     } 
     text = (data[DataGridListData(listData).dataField] as String) + "%"; 
    } 
} 
} 
1

이 메소드를 아이템 렌더러 클래스에 넣으십시오. 그것은 귀하의 요구 사항을 충족해야합니다 :

override public function set data(value:Object):void { 
    super.data = value; 
    if (value) { 
     var fieldValue:Number = 
      value[DataGridListData(listData).dataField] as Number; 
     text = String(fieldValue) + "%"; 
     if (fieldValue < 0){ 
      setStyle("color", 0xA41330); //red 
     }else{ 
      setStyle("color", 0x59A336); //green 
     } 
    } 
} 

감사합니다.

+0

감사하지만 그 값이 모두 '0 %'로 변경되어 모두 녹색이됩니다. –

+0

아이템 렌더러 클래스에서 updateDisplayList 메소드를 제거해야한다는 점을 잊어 버렸기 때문입니다. – 2DH

0

데이터 격자 열 스타일 함수 및 labelfunction을 사용하십시오. 스타일 기능을 사용하면 색상을 전환 할 수 있으며 labelfunction을 사용하여 % 문자를 데이터에 추가 할 수 있습니다.

관련 문제