none
color de fondo en celda DataGridView segun la condición RRS feed

  • Pregunta

  • en mi aplicación tengo una base de datos la cual contiene los registro ya guardado, y mediante un DataGridView puedo ver los registro, pero realmente lo que quiero es que en mi DataGridView donde estas los registro Activos y de No Activos se diferencien por color de fondo. muchas gracias para lo que me puedan ayudar
    lunes, 25 de julio de 2016 23:34

Respuestas

  • Hola Como recorrer las filas de un DataGridView,

    [-] ... lo que quiero es que las celdas de esa columna, me identifique por color de fondo, si es activo o no activos ..

    El resultado que deseas no es este?


    El código que te muestro, cambia de color la celda, respecto a la validación. Si tienes otro valores como en la imagen, tendrías que hacer uso de un Select, si el valor no es ninguno de los dos, no le cambia el color.

            'Columna 1, posición 0
            If e.ColumnIndex = 0 Then
                Dim row As DataGridViewCell = DataGridView1(e.ColumnIndex, e.RowIndex)
                Select Case row.Value
                    Case "Activos"
                        row.Style.BackColor = Color.Yellow
                    Case "No Activos"
                        row.Style.BackColor = Color.Silver
                End Select
            End If

    Saludos.


    JC NaupaCrispín
    Lima - Perú

    La magia no existe, la programación SI

    martes, 26 de julio de 2016 0:38

Todas las respuestas

  • Hola Como recorrer las filas de un DataGridView,

    Puedes usar el evento CellFormatting de tu DGV. Ahí le aplicas el formato a las filas, si cumplen con el valor o no.

     Private Sub DataGridView1_CellFormatting(sender As Object, e As DataGridViewCellFormattingEventArgs)
             _ Handles DataGridView1.CellFormatting
    
            'Columna 1, posición 0
            If e.ColumnIndex = 0 Then
                Dim row As DataGridViewCell = DataGridView1(e.ColumnIndex, e.RowIndex)
    
                If row.Value = "Activos" Then
                    DataGridView1.Rows(e.RowIndex).DefaultCellStyle.BackColor = Color.Red
                Else 'Es no Activos
                    DataGridView1.Rows(e.RowIndex).DefaultCellStyle.BackColor = Color.Blue
                End If
    
            End If
    
        End Sub

    Otra forma, si en tu columna tienes más de esas dos opciones de estado :

     Private Sub DataGridView1_CellFormatting(sender As Object, e As DataGridViewCellFormattingEventArgs)
                         _ Handles DataGridView1.CellFormatting
          
            Dim dgv As DataGridView = CType(sender, DataGridView)
    
            If dgv.Columns(e.ColumnIndex).Name = "Estado" Then
                Select Case e.Value.ToString
                    Case "Activos"
                        dgv.Rows(e.RowIndex).DefaultCellStyle.BackColor = Color.Red
                    Case "No Activos"
                        dgv.Rows(e.RowIndex).DefaultCellStyle.BackColor = Color.Blue
                End Select
            End If
    
        End Sub

    Así solo pintara las que cumplan con la condición.

    Aquí un link :

    ¿Como cambiar color de filas de un dataGridView dependiendo del contenido en texto?

    Saludos.


    JC NaupaCrispín
    Lima - Perú

    La magia no existe, la programación SI


    lunes, 25 de julio de 2016 23:44
  • no me funciono, la primera forma me selecciona toda la fila y la segunda forma no hace ninguna funcion. gracias de todas manera
    martes, 26 de julio de 2016 0:03
  • no me funciono, la primera forma me selecciona toda la fila y la segunda forma no hace ninguna funcion. gracias de todas manera

    Hola Como recorrer las filas de un DataGridView,

    Entonces solo quieres seleccionar esa celda ? Si es así tendrías que pintar la celda y no la fila como el anterior ejemplo.

         'Columna 1, posición 0
            If e.ColumnIndex = 0 Then
                Dim row As DataGridViewCell = DataGridView1(e.ColumnIndex, e.RowIndex)
    
                If row.Value = "Activos" Then
                    row.Style.BackColor = Color.Red
                Else 'Es no Activos
                    row.Style.BackColor = Color.Blue
                End If
            End If

    Sólo cambiarías el ColumnIndex = posición, a la columna que desees validar.

    Si no te ayuda, agradecería muestre una imagen de tu DGV.

    Saludos.


    JC NaupaCrispín
    Lima - Perú

    La magia no existe, la programación SI

    martes, 26 de julio de 2016 0:12
  • esto me funciona solo para seleccionar la columna completa:

     'Columna 1, posición 0
            If e.ColumnIndex = 0 Then
                Dim row As DataGridViewCell = DataGridView1(e.ColumnIndex, e.RowIndex)
    
                If row.Value = "Activos" Then
                    row.Style.BackColor = Color.Red
                Else 'Es no Activos
                    row.Style.BackColor = Color.Blue
                End If
            End If

    lo que quiero es que las celdas de esa columna, me identifique por color de fondo, si es activo o no activos

    martes, 26 de julio de 2016 0:26
  • Hola Como recorrer las filas de un DataGridView,

    [-] ... lo que quiero es que las celdas de esa columna, me identifique por color de fondo, si es activo o no activos ..

    El resultado que deseas no es este?


    El código que te muestro, cambia de color la celda, respecto a la validación. Si tienes otro valores como en la imagen, tendrías que hacer uso de un Select, si el valor no es ninguno de los dos, no le cambia el color.

            'Columna 1, posición 0
            If e.ColumnIndex = 0 Then
                Dim row As DataGridViewCell = DataGridView1(e.ColumnIndex, e.RowIndex)
                Select Case row.Value
                    Case "Activos"
                        row.Style.BackColor = Color.Yellow
                    Case "No Activos"
                        row.Style.BackColor = Color.Silver
                End Select
            End If

    Saludos.


    JC NaupaCrispín
    Lima - Perú

    La magia no existe, la programación SI

    martes, 26 de julio de 2016 0:38
  • protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
        {
            if (e.Row.RowType == DataControlRowType.DataRow)
            {
                String status;
                status= DataBinder.Eval(e.Row.DataItem, "Status"); //Status seria el nombre de su campo al que le pondra color
                if (status == "Activo")
                {
                    e.Row.ForeColor = System.Drawing.Color.Red;
                    e.Row.BackColor = System.Drawing.Color.Yellow;
                    e.Row.Font.Bold = true;
                }
    
            }
        }

    martes, 26 de julio de 2016 1:29