none
Como poner forecolor a determinadas filas de la grilla por un condicion RRS feed

  • Pregunta

  • Hola amigos: alguien puede ayudarme a como poner determinadas filas de mi grilla un determinado color en su propiedad forecolor segun la condicion que deseo:

    Ejemplo:

    en mi grilla tengo los campos: ID, Apellidos, Nombres, telefono, Condicion, etc...

    luego en la columna condicion existen los valores: NULL, retirado y vigente...

    entonces cuando se carga mi grilla deseo que las filas que contengan la condicion retirados sea de color rojo y las filas que contengan la condicion vigente sean de color azul y cuando sea null de color negro.

    alguien me podria ayudar para ver como lograr eso.

    • Cambiado Enrique M. Montejo viernes, 26 de diciembre de 2014 7:33 Pregunta relacionada con controles de Windows Forms.
    jueves, 18 de diciembre de 2014 23:43

Todas las respuestas

  • Anabelen, haces uso de un ListView o DataGridView?

    En ambos casos la solución es parecida, debes de recorrer la grilla y consultar por el valor que esperas. Te dejo el ejemplo en caso sea un DataGridView

    for (int i = 0; i < dataGridView1.RowCount; i++)
    {
      if (dataGridView1[1, i].Value == "RETIRADO")
      {
        dataGridView1[1, i].Style.BackColor = Color.Red;
      }
      else if (dataGridView1[1, i].Value == "VIGENTE")
      {
        dataGridView1[1, i].Style.BackColor = Color.Blue;
      }
      else
      {
        dataGridView1[1, i].Style.BackColor = Color.Black;
      }
    }

    __________________________________________________________________________________________________
    Espero haberte ayudado con mi sugerencia, si resolvió tu problema no olvides marcarla como respuesta.

    Willams Morales P.
    Arequipa - Perú

    jueves, 18 de diciembre de 2014 23:45
  • de un datagridview
    jueves, 18 de diciembre de 2014 23:51
  • De acuerdo, copio el ejemplo

    for (int i = 0; i < dataGridView1.RowCount; i++)
    {
      if (dataGridView1[1/*OJO AQUÍ COLOCAR EL INDICE DE LA COLUMNA*/, i].Value == "RETIRADO")
      {
        dataGridView1[1, i].Style.BackColor = Color.Red;
      }
      else if (dataGridView1[1, i].Value == "VIGENTE")
      {
        dataGridView1[1, i].Style.BackColor = Color.Blue;
      }
      else
      {
        dataGridView1[1, i].Style.BackColor = Color.Black;
      }
    }

    __________________________________________________________________________________________________
    Espero haberte ayudado con mi sugerencia, si resolvió tu problema no olvides marcarla como respuesta.

    Willams Morales P.
    Arequipa - Perú


    jueves, 18 de diciembre de 2014 23:54
  • Gracias amigo williams por tu apoyo; si me recuerdas en el otro post hasta ahora no puedo lograr como filtrar la grilla por varios campos, ese post de criteria....

    haber si por ahi me sigues ayudando, te lo agradeceria infinitamente.

    viernes, 19 de diciembre de 2014 0:01
  • Me referiré al hilo que me mencionas

    __________________________________________________________________________________________________
    Espero haberte ayudado con mi sugerencia, si resolvió tu problema no olvides marcarla como respuesta.

    Willams Morales P.
    Arequipa - Perú

    viernes, 19 de diciembre de 2014 0:04
  • Hola amigo William esl codigo funciono, pero como siempre no me explique bien, el campo condicion es una clave foranea que tiene los valores 1, 2 y NULL (CAMPO INTEGER) que corresponden a: retirado, vigente y null

    ahora la condicion es que si tiene numero este de color rojo toda la fila y si es null de color azul toda la fila...

    perdoname por no saber explicarme bien...


    • Editado Anabelen RD viernes, 19 de diciembre de 2014 2:22
    viernes, 19 de diciembre de 2014 2:01
  • Anabelen, culminarlo es lo de menos. Debes de basarte en los ejemplos que se te proporciona para terminar o mejorar tú código. 

    for (int i = 0; i < dataGridView1.RowCount; i++)
                {
                    if (dataGridView1[1 /*INDICE DE COLUMNA QUE QUIERES CONDICIONAR*/, i].Value != null)
                    {
                        dataGridView1.Rows[i].DefaultCellStyle.BackColor = Color.Red;
                    }                
                    else
                    {
                        dataGridView1.Rows[i].DefaultCellStyle.BackColor = Color.Blue;
                    }
                }


    __________________________________________________________________________________________________
    Espero haberte ayudado con mi sugerencia, si resolvió tu problema no olvides marcarla como respuesta.

    Willams Morales P.
    Arequipa - Perú


    viernes, 19 de diciembre de 2014 2:57
  • hola amigo, funciono en parte, cuando tengo dato en la columna Condicion se pinta, pero tengo el otro problema que cuando esta en vacio (NULL) no funciona, me aparece error...

    te indico esa columna es una clave foranea la cual ingresa un ID de otra tabla y cuando no tiene registro esta vacia, en la db aparece la palabra NULL, pero en vb esta vacio no tiene dato....

    como puedo lograrlo ahi, e intentado miles de formas pero no encuentro la solucion...es que tengo mucho que aprender...jijijijij.

    aqui esta mi codigo:

    Private Sub PonerColorFilas()
            Try
                For i As Integer = 0 To DataGridView1.RowCount - 1
                    If DataGridView1(16, i).Value > 0 Then
                        DataGridView1.Rows(i).DefaultCellStyle.ForeColor = Color.Red
                    Else
                        DataGridView1.Rows(i).DefaultCellStyle.ForeColor = Color.Blue
                    End If
                Next
            Catch ex As Exception
                MsgBox(ex.Message)
            End Try

        End Sub

    antes del else funciona perdectamente, despues del else ya no funciona

    • Editado Anabelen RD viernes, 19 de diciembre de 2014 23:51
    viernes, 19 de diciembre de 2014 14:47