Colocar Cores na GRID

Tenho um sistema de Contas a Receber e preciso diferenciar os vencidos dos a vencer na grid , pensei em usar cores mas pesquisei e não estou conseguindo. Alguen pode me ajudar ?

Da mais uma procurada que tem dois tópicos ensinando como fazer. Um deles tem até vídeo aulas disso. Abraço!

  1. crie uma coluna qualquer no grid. Ex {C}

  2. No onRecord, coloque sua condicao, tipo:

  3. Inspecione o elemento p/ saber o campo para vc poder validar a linha.

if({data} == ‘data atual’) {

$_i={sc_seq_register};
$_cor="#FFFF00";
{C}="<script>$('#id_sc_field_clienteID_".$_i."').parent().parent().css( \"background\", \"".$_cor."\" );</script>";

}

PS. Consegui fazer isto, com o exemplo que o “Haroldo”, postou aqui no forum.

Eu utilizei a macro “sc_field_style” do ScriptCase no evento “onRecord” para alterar as cores dos fontes dos campos.

Segue um exemplo baseado na minha aplicação, que dependendo do valor de um campo, altero para 3 cores diferentes:

if ({campo_x} >= 50) && {campo_x} < 80)
{
sc_field_style({customer_name}, ‘’, ‘’, ‘#FFCC00’, ‘’, ‘bold’); // muda a cor e deixa negrito
}
elseif ({campo_x} >= 80 && {campo_x} < 90)
{
sc_field_style({customer_name}, ‘’, ‘’, ‘#FF6600’, ‘’, ‘bold’); // muda a cor e deixa negrito
}
elseif ({campo_x} > 90)
{
sc_field_style({customer_name}, ‘’, ‘’, ‘#FF0000’, ‘’, ‘bold’); // muda a cor e deixa negrito
}
else
{
sc_field_style({customer_name}, ‘’, ‘’, ‘’, ‘’, ‘’); // sem alterações de cor/negrito
}

Estou precisando colorir linhas da grid de acordo de uma condição.

testei de outras formas. A unica que consegui fazer funcionar é como o Pessanha disse.

Até funcionou mas só na primeira página. Nas páginas seguintes simplesmente não funciona.

Alguém pode ajudar ?

É porque na época que postei esse código a cada pagina o {sc_seq_register} se reiniciava, agora sua sequencia é continuada nas páginas seguintes.

A Netmake mexeu nisso, pois sempre usei {sc_seq_register} como referência do id dos campos da consulta.

Perdeu o sentido o {sc_seq_register}.

Como resolver?

Onscriptinit:

[iw]['i']=0;

Onrecord
$_i=[iw]['i']=[iw]['i']+1;

if({data_vencimento} < date('Y-m-d')) {   
   $_cor="#ff9999";
   {C}="<script>$('#SC_ancor$_i').css( \"background\", \"".$_cor."\" );</script>";
         
}  
if({data_vencimento} == date('Y-m-d')) {   
   $_cor="#ccffcc";
   {C}="<script>$('#SC_ancor$_i').css( \"background\", \"".$_cor."\" );</script>";
}

OnNavigaten e onApplicatinInit:
[iw]['i']=0;
//colocar global como saida opcional post e get=não

Nota: Os efeitos onmouseover e onmouserout param de funcionar quando o atributo background é atribuído a linha.

TAGS: Colorir , Cor, linhas, fundo, backgound, grid, consulta, iwh

Haroldo, só para fim didático, este campo {C}, ele é um campo virtual texto? criado ali na consulta/grid, ai você coloca ele como primeira coluna? e sem LABEL Título?

E o SC_ancor?

Isso Jailton, pois não temos que inserir o código javascript para cada linha.

É possível usando o evento onfooter e um loop nas linhas para aplicar o código, mas esse evento tem que estar habilitado.

O tópico original é esse: http://www.scriptcase.com.br/forum/index.php/topic,8370.msg40817.html#msg40817

A Sugestão inicial foi essa: http://www.scriptcase.com.br/forum/index.php/topic,8370.msg40894.html#msg40894

Pode-se simplesmente echoar o código sem atribuir seu valor a uma campo virtual.

Certo, e o SC_ancor? é um campo também da tabela? como pegar ele?

na época que fiz eu acho que a NM não atribuia id para a tag TR, mas como hoje cada TR possui um id simplifiquei o código, em vez de pegar os parents até chegar na TR.

SC_ancor_#nro da linha#

Haroldo

Muito Obrigado.

Funcionou. Agora uma dúvida. Eu preciso de uma variável global para cada grid que for fazer isso. Correto ? Para o caso de ter o menu por abas e rodas 2 grids com essa característica de colorir linhas.

Por isso solicito que a global seja configurada como saida, opcional, sessão já vem desabilitada por padrão, mas desabilitar guest e post.

Em programação/atributos deveria servir para isso (variaveis locais) mas não funciona, os valores não se mantem dentro da aplicação.

Você pode criar uma biblioteca interna: (em teoria segue um sugestão não testada, pois a criei direto aqui no tópico).

Como usaria:

OnScriptInit:

LocalVar(‘SEQLINE’,‘SET’, 0);

Onrecord:

$i=LocalVar(‘SEQLINE’,’++’);
ou

$i=LocalVar(‘SEQLINE’); $i++ ;LocalVar(‘SEQLINE’,‘SET’,$i);

<?php
Function LocalVar($name='',$act='',$value='')
{
    if ($act=='SET')
    {
       $value=$value;
     }else{
        if (!empty($name))
       {
           $value=[iw][$this->Ini->nm_cod_apl][$name];
        }else{
           $value=[iw][$this->Ini->nm_cod_apl];
        }
     }
    
     if ($act=='++')
    {
         $value=$value+1;
     }

     if (!empty($name))
    {
        [iw][$this->Ini->nm_cod_apl][$name]=$value;
     }else{
        [iw][$this->Ini->nm_cod_apl]=$value;
     }
      IF ($act != 'SET') return $value;
}
?>

Dessa forma você garante o não compartilhamento de variáveis em sessão entre aplicações.

Obs.: Não foi testado. exemplo criado direto no tópico
Nota.: Com a sugestão a global iw pode ficar em sessão como saída
TAGS: Variável, Local, Aplicação, Uso, iwh

Haroldo, um detalhe que notei é que depois de usar esta rotina para colocar o fundo da linha inteiro ele para de destacar as linhas em cor diferente quando passamos o mouse por cima delas,
igual e no default da app se não usar a rotina, já observou? tem jeito de mudar isso?

Sim Jailton,

relato isso aqui: http://www.scriptcase.com.br/forum/index.php/topic,10886.msg73669.html#msg73669

Aí teria que mexer nas classes css (IMPORTANT sob as do tema) e usar o jquery para trocar o valor dos atributos da TR.

Requer mais estudos e tempo para aperfeiçoar a questão.

Camilinha pode contribuir com isso.

Grato, pelos retornos.

Então ficou legal, mas sabe como é tem cliente que já reclamar que não tá colorindo ‘a linha’ quando ele passa o mouse… kkkkkkkkk, ok vamos ver se a Camilinha passar um dia por aqui… hehe

Além de eu não ser lá essas coisas com css, estou atolado de trabalho.

Ideal mesmo é a NM implementar sc_style_line, sc_set_line_mouseover, sc_set_line_mouseout, sc_set_line_mouseclick, sc_seq_page e outras…

E como sabemos, a NetMake, vem evoluindo muito com seu sucesso mundial, e isso será fichinha pra eles disponibilizarem em breve!