[RESOLVIDO]Colorir linha da GRID - background

Pessoal, bom dia.

Eu pesquisei e localizei apenas 2 posts relacionados a este assunto neste grupo “Consulta”.
Esta discussão ocorreu em 2010.
Alguém sabe se este assunto já foi resolvido?

Qual o meu problema. Preciso trocar a cor de background de uma linha de acordo com o “status” do registro.
Hoje consigo “colorir” apenas o texto no evento onRecord utilizando sc_field_color(), mas eu preciso pintar o fundo da linha inteira.

Alguém já fez isso e pode me ajudar?

Abraços
Marcelo

Eu uso a sc_field_style, mas com essa macro vc troca a cor de fundo apenas do conteúdo.
O fundo da célula nunca consegui.

Rodrigo
Sabe dizer se existe alguma solicitação formal para NetMake resolver este assunto?
Marcelo

Eu creio que não.

Qual o caminho para eu solicitar?
Existe algum e-mail ou local na net para fazer estas solicitações?
Eu já reportei “bugs”, mas nunca fiz uma solicitação!
Obrigado
Marcelo

Aqui mesmo tem o sub-forum “Sugestões”.

Acredito que só vai com Javascript, e chamar a função no onRecord
No caso teria que ver como esta denominado o campo (inspecionando o elemento), e usando o JS para mudar de cor.

Ex:

$(document).ready(function(“red”){
$(“aqui coloque o elemento que pertence a grid”).css(“background-color”, “red”);
});

$(document).ready(function(“green”){
$(“aqui coloque o elemento que pertence a grid”).css(“background-color”, “green”);
});

Lá no onRecord tenta criar a sua lógica, tipo:

if({campo} != 0){

//chama a função js red.

}else{

//chama a função js green.

}

OBS: Não testei isso, apenas um paliativo ou uma sugestão, tem que estudar pra ver se rola. Se alguém quiser melhorar ou dar novas digas, show de bola!

Isso não eh um BUG, você pode abrir um tópico em SUGESTÕES e solicitar uma macro que troque o fundo da linha dinamicamente.

Inspecione o código e com recursos Style você consegue fazer isso.

Fred,

Sempre eh bom testar o código antecipadamente quando sugerir um.

1 Curtida

Como falei foi uma sugestão, uma ideia que me veio na cabeça agora, basta apenas tentar implementar. As vezes a pessoa não tem noção de como começar, mas se você mostra ao menos uma luz, a pessoa já se anima.

mesmo assim Fred, tente pelo menos dar alguma garantia que seu código possa funcionar, testando-o antes.

Uma coisa é um código feito onde você copia e cola e testa, outra coisa é uma “Sugestão” em forma de código.
A sugestão foi de boa fé e humildemente simples, peço desculpas aos amigos se não é o suficiente para ajuda-lo.

Agradeço toda a ajuda.

Mas será preciso trabalhar nesta sugestão e gastar um tempinho…

Haroldo, você comentou em “inspecionar o código”. Eu sei como fazer isso diretamente no código, mas se em algum momento eu precisar “re-gerar” esta aplicação, não perderei os ajustes feitos manualmente?

Obrigado a todos.

Marcelo

Sua intervenção deverá ser sempre dentro do SC para não perder nada.

Haroldo
Por onde começo?
Na aplicação “Grid” não existe a opção de programação “Javascript”.
Tentei incluir um “javascript” no onApplicationInit e chamar no onRecord com um simples “alert” e não rolou.

Fiz o seguinte
onApplicationInit
print "";

onRecord
print “”;

E nada aconteceu!

Abraços
Marcelo

ideal seria vc ter uma classe css própria e troca-la dinamicamente, o problema eh onde realizar essa troca. Talvez na onHeader.

Problema maior eh que o SC não identifica o elemento da linha.

Caro colega,

Experimente na onfooter:

echo "";

Exemplo:

echo "";

Na onfooter vc iniciar um contador de linha (global)
Na onrecord vc deve contar o número da linha, e verificar se aquela linha deve realçar, guardar um array.
Na onfooter ler o array e acionar o comando jquery para realçar as linhas marcadas, zerar o contador e limpar o array.

Haroldo

Fiz isso, mas acredito que esteja errando na hora de nomear o campo da tabela.

No meu caso o nome da primeira coluna da grid é “id_ordem”, então eu fiz um teste fixando apenas uma linha, mas não consegui como no seu exemplo.

Acho que estou errado no momento de passar o id, veja:

echo "<script> $('#id_sc_field_id_ordem_1').parent().parent().css( \"background\", \"yellow\" );</script>";

Será que é isso?

Marcelo

Inspecione o ID do Elemento da primeira coluna e primeira linha.

Deve executar no evento onFooter.

Bem, código completo e funcional:

** Configurar variável global: iw-> saida, opcional, get e post = Não.

OnHedear:
[iw][“i”]=0;
[iw][“realca”]=Array();

OnRecord:
[iw][“i”]=$_i=[iw][“i”]+1;
if ({Quant}>100) { // realçar linhas cujo quantidade sejam maior que 100.
[iw][“realca”][$_i]=[iw][“i”];
}

Onfooter:
$_js="";
echo $_js;

Resultado real: