Acho que vc vai ter que escrever seu próprio renderer para fazer isso. Além disso, tem uma propriedade, autodrawbackground que vc tem que setar para false para controlar seu item.
Sobre escrever o próprio renderer, acho q vc está falando em fazer outro renderer estilizado e depois trocar por ele, certo?
Se for isso eu já fiz, usando “ClassFactory”, mas deu errado pois na hora que ele faz o update do renderer, mais de um item é afetado (depende do tamnho da lista acho, mas uns 2 ou 3 ítens foram afetados pelo estilo).
Valeu!
Os items renderes são reutilizados pelo data grid. Quando vc mexe no scrool, ele pega um item que não vai mais aparecer e reutiliza. Isso já ocorreu comigo, quando meu item renderer era um checkBox. Eu selecionava um e alguns outros eram tb selecionados. No seu renderer seria bom vc setar a cor toda vez que o seu data muda. Sobrescreva o método set data de seu componente e execute a lógica dentro. Se vc colocar o código fica mais fácil de ajudar.
Então renzonuccitelli, eu já fiz algo parecido (não é em dataGrid, é num List) mas não rolou, vou colocar pra vc conferir:
primeiro criei minha lista com o atributo status (usado na condição de mudar a cor do label)
public class minhaLista extends List{
private var _status:String;
public function minhaLista(){super();}
public function get status():String {return _status;}
public function set status(value:String):void {_status = value;}
}
depois, no meu itemRenderer, coloquei o override pra ler o status e mudar a cor do label
override public function set data(value:Object):void {
super.data = value;
if (data.status == "APROVADO")
lblItem.setStyle("color",0x39DF17); // cor verde
}
e, finalmente, na aplicação, o valor do status com um Bind pra uma variável ‘global’ (rootStatus), que pode ser alterada por qualquer evento (clique de qq botão por ex)
Como eu disse, o ItemRenderer é reutilizado. O que vc está fazendo é setar o background quando aprovado. Está faltando voltar a cor original quando o status for diferente de aprovado. Experimenta colocar um else na sobreposição do set data e voltar a cor original.
Pode crer, agora entendi o processo, vc matou, foi só mesmo colocar o “else” pra ele aplicar (resetar) o que não estiver com status.
Testei inclusive com o ClassFactory e rolou (no fundo deve ser a mesma coisa, ou estou enganado?).
No fim das contas mesmo quando vc coloca a String o flex por traz dos panos passa a classe como argumento do ClassFactory. O que eu faço é implementar sempre a interface IFactory em meus itemRenderes para não ter que usar o ClassFactory. Mas entre String e ClassFactory, prefiro o segundo, pois se vc refatorar o nome da classe não vai ter problemas, como vai ter no primeiro caso.