Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

FabianoSouza

TD com background condicional

Recommended Posts

Pessoal, preciso de algo similiar à formatação condicional do Excel.

Preciso que, se um campo flag do bd for igual a True pinte o fundo de uma TD.

 

Mas não estou conseguindo construir a lógica para atingir este objetivo.

 

Pensei eu pegar o ID do bd usar como identificador da TD. Mas já uso o campo do BD para o ID da TR.

Se usar também para ID da TD vai dar problema, certo?.

 

Preciso de um marcador único para identificar a TD que receberá a função que irá colorir seu background.

td.png

 

 

As bolinhas vermelhas seriam as TDs que gostaria de pintar o fundo.

 

 

Um help por caridade.

 

Obrigado e bom dia a todos!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tenta assim:

 


While Not Rs.EOF
   If Rs("Codigo") >= 160 Then
      Cor = "#0000FF" 'Azul
   Else
      Cor = "#FF0000" 'Vermelho
   End If

   Response.Write("<tr>" &
   "<td><div align='center'>" & Rs("Codigo") & "</div></td>" &
   "<td><div align='center'>" & Rs("Status") & "</div></td>" &
   "<td><div align='center'>" & Rs("DataInicio") & "</div></td>" &
   "</tr>")
Rs.MoveNext
Wend  

 

Como vc não colocou o critéro do que queria pintar de vermelho coloquei pelo codigo.

 

Tudo que for MAIOR que 160 será azul, se for diferente disse ficará VEREMELHO.

 

Good Luck!!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

olha este exemplo:

 

<%
Option Explicit
Dim Conexao, rs, sql, varColor
sql = "SELECT Categories.CategoryName, Products.ProductName, "
sql = sql & "Products.UnitPrice, Products.UnitsInStock "
sql = sql & "FROM Products INNER JOIN Categories " 
sql = sql & "ON Products.CategoryID = Categories.CategoryID "
sql = sql & "ORDER BY Categories.CategoryName, Products.ProductName"

'abre a conexao com o SQL Server
Set Conexao = Server.CreateObject("ADODB.Connection")
Conexao.Open "Server=WIND; Database=Northwind; Driver={SQL Server}; UID=sa; PWD="

Set rs = Conexao.Execute(sql)
%>
<HTML>
<HEAD>
<TITLE>Produtos por categoria</TITLE>
</HEAD>

<BODY topmargin="0" leftmargin="0" bgcolor="#FFFFFF">
<TABLE border="0" cellpadding="0" width="575" bordercolor="#CCCCCC" cellspacing="0" align="center">
  <TR bgcolor="#FF6633"> 
    <TD colspan="6"> 
      <DIV align="center"><FONT color="#FFFFFF"><B>PRODUTOS POR CATEGORIA</B></FONT></DIV>
    </TD>
  </TR>
  <TR bgcolor="#FF6633"> 
    <TD width="114" bgcolor="#FF6633"> 
      <DIV align="left"><FONT color="#FFFFFF"><B>categoria </B> </FONT></DIV>
    </TD>
    <TD width="255"> 
      <DIV align="left"><FONT color="#FFFFFF"><B>nome</B></FONT></DIV>
    </TD>
    <TD width="101"> 
      <DIV align="center"><FONT color="#FFFFFF"><B>preço</B></FONT></DIV>
    </TD>
    <TD width="105" colspan="3"> 
      <DIV align="center"></DIV>
      <DIV align="center"><FONT color="#FFFFFF"><B>saldo</B></FONT></DIV>
    </TD>
  </TR>
<%
varColor = True
While Not rs.EOF
  If varColor then  %> 
  <TR bgcolor="#E1E1E1"> <%
      varColor = False
   Else%> 
  <TR bgcolor="#FFFFFF"> <%
       varColor = True
   End IF%> 
    <TD width="114"><B><FONT color="#471555" face="Arial" size="2"><%= rs("CategoryName") %></FONT></B></TD>
    <TD width="255"> 
      <DIV align="left"><B><FONT color="#471555" face="Arial" size="2"><%= rs("ProductName") %></FONT></B></DIV>
    </TD>
    <TD width="101"> 
      <DIV align="center"><FONT size="2"><B><FONT color="#471555" face="Arial"><%= FormatNumber(rs("UnitPrice"),2) %></FONT></B></FONT></DIV>
    </TD>
    <TD width="105" colspan="3"> 
      <DIV align="center"><FONT size="2"><B><FONT color="#471555" face="Arial"><%= rs("UnitsInStock") %></FONT></B></FONT></DIV>
    </TD>
  </TR>
  <% rs.MoveNext
Wend
rs.Close
Conexao.Close
Set Conexao = Nothing
Set rs = Nothing
%> 
</TABLE>
</BODY>
</HTML>

 

Compartilhar este post


Link para o post
Compartilhar em outros sites
<%
******** INICIO REPETIÇÃO
If rs("flag")=True Then
 v_flag = "#FF0000"
else
 v_flag = "#FFFFFF"
end if
%>
......<table. .....
 <td bgcolor="<%=v_flag%>">
......
<%
******** FIM REPETIÇÃO
%>

 

??????

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá Humberto. Estou testando neste momento sua sugestão.

Ocorre que meu grid está com as linhas zebradas pelo CSS (tr:nth-child(odd) e tr:nth-child(even)).

 

O trecho

else
v_flag = "#FFFFFF"

Invalida a CSS nas TDs da coluna que coloco o IF (coluna em que está o campo que quero destacar). Veja o print.

destaque.png

 

Queria criar esta funcionalidade mas sem abrir mão do estilo CSS porque acho mais prático para eventual mudanças no de layout e também para manter os padrões web.

 

Se tiver alguma "luz" posta aí.

Vou testar as outras sugestões dos colegas. Mas pelo que vi devem funcionar da mesma forma.

 

Talvez uma saída seja criar uma DIV dentro da TD, caso minha flag seja True. Vou testar isso..

 

 

 

Obrigado.

Compartilhar este post


Link para o post
Compartilhar em outros sites


<%

varColor = True

While Not rs.EOF

If varColor then %>

<TR bgcolor="#E1E1E1"> <%

varColor = False

Else%>

<TR bgcolor="#FFFFFF"> <%

varColor = True

End IF%>

<TD width="114"><B><FONT color="#471555" face="Arial" size="2"><%= rs("CategoryName") %></FONT></B></TD>

<TD width="255">

<DIV align="left"><B><FONT color="#471555" face="Arial" size="2"><%= rs("ProductName") %></FONT></B></DIV>

</TD>

<TD width="101">

<DIV align="center"><FONT size="2"><B><FONT color="#471555" face="Arial"><%= FormatNumber(rs("UnitPrice"),2) %></FONT></B></FONT></DIV>

</TD>

<TD width="105" colspan="3">

<DIV align="center"><FONT size="2"><B><FONT color="#471555" face="Arial"><%= rs("UnitsInStock") %></FONT></B></FONT></DIV>

</TD>

</TR>

<% rs.MoveNext

Wend

rs.Close

Conexao.Close

Set Conexao = Nothing

Set rs = Nothing

%>

</TABLE>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá xanburzum. Ainda não testei sua sugestão. Mas creio que deva ocorrer o mesmo que no caso do Humberto, não? Invalida a "zebragem" feito pelo CSS.

 

Mas vou testar.



Salve galera! Fiz algo aqui que resolveu.

<%
If Recordset1("EventosCodPropietario") = "True" then
Response.Write("<div class=item_share>")
Response.Write resumo(Recordset1("EventosTitulo"),60)
Response.Write("</div>")
Else
Response.Write resumo(Recordset1("EventosTitulo"),60)
End if
%>

Se a flag for True, crio uma DIV e escreve nela o recordset, caso contrário apenas escrevo o recordset (sem a DIV).

 

Muuuuito obrigado a todos!

Compartilhar este post


Link para o post
Compartilhar em outros sites

altere o CSS

Compartilhar este post


Link para o post
Compartilhar em outros sites

Putz..mas o If não funciona.

 

var_flag = Session("minha_session")

If Recordset1("meu_campo") <> var_flag then
Response.Write("<div class=item_share>") : Response.Write("</div>")
End if
Aliás, sempre dá umas panes quando comparo o valor de um recordset com uma variável dentro de um loop.

 

Só funciona assim, colocando o valor explicito.

 

If Recordset1("meu_campo") <> 10 (preciso explicitar o valor)
Response.Write("<div class=item_share>") : Response.Write("</div>")
End if

 

O que acontece?? Tanto o rs quanto a variável são numéricos.

Compartilhar este post


Link para o post
Compartilhar em outros sites

as variaveis são do mesmo tipo de dados

Compartilhar este post


Link para o post
Compartilhar em outros sites

Opa. Agora sim. Tinha que usar Cint no rs e na variável.

If CInt(Recordset1("EventosCodPropietario")) <> CInt(var_cod_proprietario) then...

 

Sempre pensei que, uma vez um número sendo recuperado do banco, form, session ou qualquer outra fonte ele por "default" passaria a ser do tipo texto.

 

Aprendi mais esta.

 

Valew pessoal!.

Compartilhar este post


Link para o post
Compartilhar em outros sites

é preciso convertê-las antes

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.