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!
-
crie uma coluna qualquer no grid. Ex {C}
-
No onRecord, coloque sua condicao, tipo:
-
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!