Ver Mensaje Individual
  #6 (permalink)  
Antiguo 29/05/2013, 05:57
eamanesims
 
Fecha de Ingreso: noviembre-2011
Mensajes: 117
Antigüedad: 12 años, 5 meses
Puntos: 2
Respuesta: gridview, pintar de color los valores de una celda

Bueno tras estar probando y buscando mil formas lo he conseguido! :D

Muestro cómo por si le sirve a alguien:

en el evento rowdatabound del gridview:

Código:
 protected void gv_RowDataBound(object sender, GridViewRowEventArgs e)
        {
            
            if (e.Row.RowType == DataControlRowType.DataRow)
            {
                int index = GetColumnIndexByName(e.Row, "NombreColumnaBuscar");
                if (index != -1)
                {
                    if (e.Row.Cells[index].Text == "PROCESADO")
                    {
                        e.Row.Cells[index].Text = "<img src='/App_Themes/EstadoRojo.png'>" + e.Row.Cells[index].Text;
                    }
                    else if (e.Row.Cells[index].Text == "EN PROCESO")
                    {
                        e.Row.Cells[index].Text = "<img src='/App_Themes/EstadoNaranja.png'>" + e.Row.Cells[index].Text;
                    }
                    else if (e.Row.Cells[index].Text == "PENDIENTE")
                    {
                        e.Row.Cells[index].Text = "<img src='/App_Themes/EstadoVerde.png'>" + e.Row.Cells[index].Text;
                    }
                }
            }
        }

//ESTA FUNCIÓN ES LA QUE RETORNA EL INDEX DE LA COLUMNA SI LA ENCUENTRA, SINO LE HE PUESTO QUE DEVUELVA -1:
 public static int GetColumnIndexByName(GridViewRow row, string columnName)
        {
            int columnIndex = 0;
            bool encontrado = false;

            foreach (DataControlFieldCell cell in row.Cells)
            {
                if (cell.ContainingField is BoundField)
                    if (((BoundField)cell.ContainingField).DataField.Equals(columnName))
                    {
                        encontrado = true;
                        break;
                    }
                columnIndex++; 
            }

            if (encontrado == false)
            {
                columnIndex = -1;
            }
            return columnIndex;
        }
la parte que he pintado de azul es porque bueno eso habría que ponerlo en alguna función o clase que enviandole la columna por ej. retorne la imagen que hay que poner o la string que hay que ponerle al valor de esa celda (eso ya cada uno como lo quiera hacer) creo que al final no quedó tan mal y sirve para cualquier tabla que se cargue en el gridview, de forma que esté donde esté esa columna pondra cuadrado de color y sino está no hará nada

yo lo he adaptado a mi código el post original de donde lo saqué: http://stackoverflow.com/questions/9...iew-in-asp-net

Un saludo y gracias por tu tiempo AWesker