Добавьте знак% и раскрасьте его - PullRequest
1 голос
/ 25 сентября 2011

У меня есть столбец таблицы данных с числами в нем.Как мне:

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
        }
    }
}
}

Ответы [ 3 ]

1 голос
/ 26 сентября 2011

Если ваш код правильно окрашивает метку, это должно сработать.

// 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 голос
/ 26 сентября 2011

Попробуйте поместить этот метод в свой класс рендерера предметов.Он должен соответствовать вашим требованиям:

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 голосов
/ 26 сентября 2011

Используйте функцию стиля столбца таблицы данных и функцию метки.С помощью stylefunction вы можете переключать цвет, а с помощью labelfunction вы можете добавлять символ% к вашим данным.

...