none
Cambiar el color de las grillas RRS feed

  • Pregunta

  • Buenas gente estoy haciendo un sistema para un gimnasio y tengo un dataGriw donde quiero mostrar a los socios que tiene la cuota vencida de color rojo y blanco los que no. Pero todas las filas me salen de color rojo aunque no esten vencidas alguien sabe como puedo solucionarlo este es mi codigo:

     public void CalcularVencimiento()
            {
                foreach (DataGridViewRow vencimiento in dgvConsultaPago.Rows)
                {
                    //obtengo el valor de la fecha de vencimiento 
                    var Fechavencimiento = vencimiento.Cells["FechaVencimiento"].Value;

                    //y lo comparo con la fecha del dia
                    if (Convert.ToDateTime(Fechavencimiento) >= Hoy)
                    {
                        dgvConsultaPago.DefaultCellStyle.BackColor = Color.Red;
                        
                    }
                    if (Convert.ToDateTime(Fechavencimiento) <= Hoy)
                    {

                        dgvConsultaPago.DefaultCellStyle.BackColor = Color.LightBlue;

                    }

                }
            }


    miércoles, 19 de noviembre de 2014 5:58

Respuestas

  • hola

    la solucion venia bien salvo por esta parte

    if (Convert.ToDateTime(Fechavencimiento) >= Hoy)
    {
        vencimiento.DefaultCellStyle.BackColor = Color.Red;
                        
    }
    

    como veras solo pintas en rojo las que superan el dia de hoy, las demas las dejas sin asignar asi quedan en blanco

    pero es a la row la que cambias el color

    tambien aconsejaria que uses

    foreach (DataGridViewRow row in dgvConsultaPago.Rows){

    asi no te confunde

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    • Propuesto como respuesta Pedro Ávila domingo, 23 de noviembre de 2014 15:28
    • Marcado como respuesta carolina1234 lunes, 24 de noviembre de 2014 14:44
    miércoles, 19 de noviembre de 2014 10:43

Todas las respuestas

  • Hola querido amigo la forma mas adecuada de poder pintar celdas de un datagridview bajo determinadas condiciones.

    Private Sub datagridview1_CellFormatting(sender As System.Object, e As System.Windows.Forms.DataGridViewCellFormattingEventArgs) Handles datagridview1.CellFormatting
            Dim row As DataGridViewRow = datagridview1.Rows(e.RowIndex)
            Dim cell As DataGridViewCell = datagridview1.Rows(e.RowIndex).Cells("CorrelativoNumerico")
            Dim cell2 As DataGridViewCell = datagridview1.Rows(e.RowIndex).Cells("Estado")

            If cell2.Value.ToString() = "Inactivo" Then
                row.DefaultCellStyle.BackColor = Color.Gray
            End If

            If Convert.ToDouble(cell.Value) <= 0 And cell2.Value.ToString() <> "Inactivo" Then
                row.DefaultCellStyle.BackColor = Color.LightCoral
            ElseIf Convert.ToDouble(cell.Value) > 0 And cell2.Value.ToString() <> "Inactivo" Then
                row.DefaultCellStyle.BackColor = Color.LightGreen
            End If
        End Sub

    Lo único que deberías de hacer es poner el nombre de las columnas según tu necesidad eso seria el único cambio que tendrías que hacer.

    Espero haberte ayudado saludos gracias. Si te sirvió marcarla como útil.

        
    miércoles, 19 de noviembre de 2014 6:09
  • hola

    la solucion venia bien salvo por esta parte

    if (Convert.ToDateTime(Fechavencimiento) >= Hoy)
    {
        vencimiento.DefaultCellStyle.BackColor = Color.Red;
                        
    }
    

    como veras solo pintas en rojo las que superan el dia de hoy, las demas las dejas sin asignar asi quedan en blanco

    pero es a la row la que cambias el color

    tambien aconsejaria que uses

    foreach (DataGridViewRow row in dgvConsultaPago.Rows){

    asi no te confunde

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    • Propuesto como respuesta Pedro Ávila domingo, 23 de noviembre de 2014 15:28
    • Marcado como respuesta carolina1234 lunes, 24 de noviembre de 2014 14:44
    miércoles, 19 de noviembre de 2014 10:43