none
Como hago para cambiar el color de una celda segun el resultado RRS feed

  • Pregunta

  • Buenas tardes!

    Soy nuevita en estas cosas, por ello decidi consultarlo con uds...

    Estoy creando una pagina web .asp la cual va a tener como proposito revisar los status de proyectos.

    Pude crear los codigos para que se puedan ingresar los datos de cada uno de lo proyectos al igual que los resultados en tablas que guardan informacion en una base de datos de MS Access.

    El problema actualmente es, que necesito que en una columna especifica me aparezca un color segun los datos de otra. Por ej. Si en la columna "Scope" dice "1" que la columna "status" sea color rojo, si es "2", amarillo y "3" verde.

    Adjunto mi codigo para ver si alguien sabe como ayudarme. Muchas gracias!!!

    table width="100%" border="1" height="165">
      <thead>
        <tr>
     <tr bgcolor= "#00009C">
          <td height="19" align="center"><b><font color="#FFFFFF">Clave</font></b></td>
          <td height="19" align="center"><b><font color="#FFFFFF">Pool</font></b></td>
          <td height="19" align="center"><b><font color="#FFFFFF">Project Manager</font></b></td>
          <td height="19" align="center"><b><font color="#FFFFFF">Project Name</font></b></td>
          <td height="19" align="center"><b><font color="#FFFFFF">Project Description</font></b></td>
          <td height="19" align="center"><b><font color="#FFFFFF">Account</font></b></td>
          <td height="19" align="center"><b><font color="#FFFFFF">Complexity</font></b></td>      
          <td height="19" align="center"><b><font color="#FFFFFF">Project Type</font></b></td>
          <td height="19" align="center"><b><font color="#FFFFFF">Current Phase</font></b></td>
          <td height="19" align="center"><b><font color="#FFFFFF">Start Date</font></b></td>
          <td height="19" align="center"><b><font color="#FFFFFF">Original Planned End Date</font></b></td>
          <td height="19" align="center"><b><font color="#FFFFFF">Current Completion Date</font></b></td>
          <td height="19" align="center"><b><font color="#FFFFFF">Real Completion Date</font></b></td>
          <td height="19" align="center"><b><font color="#FFFFFF">Scope Change this week</font></b></td>
          <td height="19" align="center"><b><font color="#FFFFFF">Re-schedule this week</font></b></td>
          <td height="19" align="center"><b><font color="#FFFFFF">Expected % Advance acc. Project Plan</font></b></td>
          <td height="19" align="center"><b><font color="#FFFFFF">Current % Project Advance</font></b></td>
          <td height="19" align="center"><b><font color="#FFFFFF">SPI</font></b></td>
          <td height="19" align="center"><b><font color="#FFFFFF">Scope</font></b></td>
          <td height="19" align="center"><b><font color="#FFFFFF">Resource</font></b></td>
          <td height="19" align="center"><b><font color="#FFFFFF">Overall Health Status</font></b></td>
          <td height="19" align="center"><b><font color="#FFFFFF">Exception Description</font></b></td>
          <td height="19" align="center"><b><font color="#FFFFFF">Mitigation Actions</font></b></td>
          <td height="19" align="center"><b><font color="#FFFFFF">Owner</font></b></td>
          <td height="19" align="center"><b><font color="#FFFFFF">Due Date</font></b></td>
     </tr>
      </thead>
      <tbody>
    <%sql="SELECT * FROM Metrics WHERE Borrado = False ORDER BY Clave DESC"
    dbfile=Server.MapPath("../../fpdb/ticketsgenerales.mdb")
    Set OBJdbConnection=Server.CreateObject("ADODB.Connection")
    OBJdbConnection.Open "driver={Microsoft Access Driver (*.mdb)};dbq="&dbfile
    Set rs = Server.CreateObject("ADODB.Recordset")
    rs.Open sql, OBJdbConnection, 3, 3
    fp_sNoRecords="<tr><td colspan=8 align=left width=""100%"">No General information.</td></tr>"%>
    <!--#include file="../../_fpclass/valida_nulo.inc"-->
    <% DO UNTIL rs.Eof %>
          <TR>
          
     <TD><b><CENTER> <a href="editor/detail.asp?Clave=<%= rs("Clave") %>" target="_blank"><font face="Verdana" size="2"><%= rs("Clave") %> </a></CENTER></b></TD>
     <TD><b><CENTER><font face="Verdana" size="2"><%= rs("Pool") %></b></TD>
            <TD><b><CENTER><font face="Verdana" size="2"><%= rs("ProjectManager") %></b></TD>
     <TD><b><CENTER><font face="Verdana" size="2"><%= rs("ProjectName") %></b></TD>
            <TD><b><CENTER><font face="Verdana" size="2"><%= rs("ProjectDescription") %></b></TD>
     <TD><b><CENTER><font face="Verdana" size="2"><%= rs("Account") %></b></TD>
     <TD><b><CENTER><font face="Verdana" size="2"><%= rs("Complexity") %></b></TD>
     <TD><b><CENTER><font face="Verdana" size="2"><%= rs("ProjectType") %></b></TD>
            <TD><b><CENTER><font face="Verdana" size="2"><%= rs("CurrentPhase") %></b></TD>
     <TD><b><CENTER><font face="Verdana" size="2"><%= rs("StartDate") %></b></TD>
     <TD><b><CENTER><font face="Verdana" size="2"><%= rs("OriginalPlannedEndDate") %></b></TD>
     <TD><b><CENTER><font face="Verdana" size="2"><%= rs("CurrentCompletionDate") %></b></TD>
     <TD><b><CENTER><font face="Verdana" size="2"><%= rs("RealCompletionDate") %></b></TD>
     <TD><b><CENTER><font face="Verdana" size="2"><%= rs("ScopeChangethisweek") %></b></TD>
     <TD><b><CENTER><font face="Verdana" size="2"><%= rs("Re-schedulethisweek") %></b></TD>
     <TD><b><CENTER><font face="Verdana" size="2"><%= rs("Expected%AdvanceaccordingProjectPlan") %></b></TD>
     <TD><b><CENTER><font face="Verdana" size="2"><%= rs("Current%ProjectAdvance") %></b></TD>
            <TD><b><CENTER><font face="Verdana" size="2"><%= rs("SPI") %></b></TD>
            <TD><b><CENTER><font face="Verdana" size="2"><%= rs("Scope") %></b></TD>
            <TD><b><CENTER><font face="Verdana" size="2"><%= rs("Resource") %></b></TD>
            <TD><b><CENTER><font face="Verdana" size="2"><%= rs("OverallHealthStatus") %></b></TD>
            <TD><b><CENTER><font face="Verdana" size="2"><%= rs("ExceptionDescription") %></b></TD>
            <TD><b><CENTER><font face="Verdana" size="2"><%= rs("MitigationActions") %></b></TD>
            <TD><b><CENTER><font face="Verdana" size="2"><%= rs("Owner") %></b></TD>
            <TD><b><CENTER><font face="Verdana" size="2"><%= rs("DueDate") %></b></TD>
    <% rs.MoveNext
    LOOP
    set rs = Nothing
    OBJdbConnection.Close
    set OBJdbConnection = Nothing%>
    </tbody>
    </table>

    </font>
    </BODY>
    </HTML>

    viernes, 9 de noviembre de 2012 22:09

Todas las respuestas

  • De manera rápida algo bien sencillo, tu lo puedes hacer mas elegante =)

    La idea es meter un IF en tu td y validar el recordset

    <TD style="background-color: <% if rs("Scope")==1 then Response.Write("Red") End %> ;"><b><CENTER><font face="Verdana" size="2"><%= rs("Scope") %></b></TD>

    Solo puse el ejemplo para el primer valor Scope = 1, entonces tú agregas las demás validaciones de la misma manera. Puede que contenga errores porque no lo probé, pero básicamente esa es la idea.

    Inténtalo y nos cuentas.

    Edito: Por cierto, no tomé en cuenta las comillas, puede que te marqué error por eso, solo debes probar concatenando la cadena de la manera correcta. Otra opción que se me acaba de ocurrir es hacer el td dinámico mediante el response.write .. 

    Saludos!


    Miguel Salazar


    • Editado Mig Salazar sábado, 10 de noviembre de 2012 0:02
    viernes, 9 de noviembre de 2012 23:58
  • pero en que estas programando ? proque eso no es asp.net

    si lo es esta horrible, porque esta lejos de ser correcto la forma de lograr lo que has realizado


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina

    sábado, 10 de noviembre de 2012 0:10
  • Correcto Leandro, no es .net...

    Es ASP 3 y difícilmente hay otra manera de programar en ese lenguaje, aparte de que es lenguaje de scripting y (según yo) no es orientado a objetos.

    Saludos!



    Miguel Salazar




    • Editado Mig Salazar sábado, 10 de noviembre de 2012 0:26
    sábado, 10 de noviembre de 2012 0:22
  • Mejor es que asignes una clase(class) según el valor; así evitas tanto if insertados.

    Si no quieres crear un archivo css externo, puedes incluir este código entre las etiquetas <head>

    <style>

    .frojo{background-color: #EE0000;}

    .famarillo{background-color:#FFFF00;}

    .fverde{background-color:00FF00;}

    </style>

    .... .... .... ....

    <% DO UNTIL rs.Eof

    valscope=rs("Scope")

    if valscope=1 then

    fondo="frojo"

    else if valscope=2 then

    fondo="famarillo"

    else

    fondo="fverde"

    end if

    %>

    --cuando vayas a imprimir (en pantalla)--

    <td class="<% =fondo%>">

    AGREGO:

    ademas de ser mas limpio, sin insertar if por todos lados, al momento de que te pidan cambiar el color, solo debes modificar el style.


    • Editado guarracuco sábado, 10 de noviembre de 2012 19:39
    sábado, 10 de noviembre de 2012 19:36
  • Muchas gracias a todos!

    Asi pude lograr que el campo "Scope" asigne un color segun la respuesta en la tabla:

    <%if rs("Scope") = "Red" Then response.write "<td bgcolor=""#FF0000"">" Else response.write "<td bgcolor=""#00FF00"">" End If%></TD>

    Muchas gracias nuevamente!

    • Marcado como respuesta nancycia lunes, 12 de noviembre de 2012 14:32
    • Desmarcado como respuesta nancycia lunes, 12 de noviembre de 2012 15:08
    lunes, 12 de noviembre de 2012 14:32
  • Una consulta mas....

    Como hago en este caso, para que en la Columna "SPI" me traiga un color segun la respuesta de las columnas "Expected%AdvanceaccordingProjectPlan" y "Current%ProjectAdvance"? Es decir:

    If "Expected%AdvanceaccordingProjectPlan" > "Current%ProjectAdvance" = "Red"

    If "Expected%AdvanceaccordingProjectPlan" < "Current%ProjectAdvance" = "Yellow"

    Else "Green"

    Muchas gracias!!!!!

    lunes, 12 de noviembre de 2012 15:08