none
cambiar color de una fila

    Question

  • Hola,

    Tengo el siguiente código para poner otro color a una fila cuando se cumple una codición pero no hay forma.

    For fil = 0 To DataGridView1.Rows.Count - 1

     

    If TieneTemporal(DataGridView1.Item(0, fil).Value.ToString, DataGridView1.Item(1, fil).Value.ToString, DataGridView1.Item(2, fil).Value.ToString) = True Then

     

     

    DataGridView1.Rows(fil).Cells(0).Style.foreColor = Color.Green

     

    End If

     

    Next

    Sin embargo si pongo

    DataGridView1.columns(0).Style.foreColor = Color.Green

    si me funciona

    Muchas gracias

    Friday, March 25, 2011 5:03 PM

Answers

  • hola

    para recorrer las filas usa algo como esto

     

    For Each row As DataGridViewRow In DataGridView1.Rows

     
        If TieneTemporal(row.Cells(0).Value.ToString(), row.Cells(1).Value.ToString, row.Cells(2).Value.ToString) Then

            row.DefaultCellStyle.BackColor = Color.CadetBlue

        End If

     
    Next

     

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
    Saturday, March 26, 2011 7:05 AM

All replies

  • Esto debría servir

    Private Sub grdTest_CellFormatting(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellFormattingEventArgs) Handles grdproj.CellFormatting
            Dim drv As DataRowView
            If e.RowIndex >= 0 Then
                    drv = ds.Tables(0).DefaultView.Item(e.RowIndex)
                    e.CellStyle.BackColor = Color.CadetBlue
            End If
        End Sub


    Custom Control Silverlight
    "Blog Ingphillip's Prog: TODO WEB
    Friday, March 25, 2011 10:30 PM
  • hola

    para recorrer las filas usa algo como esto

     

    For Each row As DataGridViewRow In DataGridView1.Rows

     
        If TieneTemporal(row.Cells(0).Value.ToString(), row.Cells(1).Value.ToString, row.Cells(2).Value.ToString) Then

            row.DefaultCellStyle.BackColor = Color.CadetBlue

        End If

     
    Next

     

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
    Saturday, March 26, 2011 7:05 AM
  • "vkjdbnvpoieqhg" escribió:

    > If TieneTemporal(DataGridView1.Item(0, fil).Value.ToString, _
    >                  DataGridView1.Item(1, fil).Value.ToString, _
    >                  DataGridView1.Item(2, fil).Value.ToString) = True Then

    Hola:

    A fín de evitar la excepción que con toda seguridad se producirá si el valor de alguna celda es NULL, yo que tu utilizaría el método compartido ToString de la clase Convert, en lugar de utilizar el método ToString de la clase Object, que es el que tú estás utilizando para convertir a String el valor de las celdas.

    El método compartido ToString de la clase Convert, te devolverá una cadena de longitud cero si el valor de la celda es NULL, pero el método ToString de la clase Object, te devolverá una excepción tan grande como un camión:

            For Each row As DataGridViewRow In DataGridView1.Rows

                Dim column1 As String = Convert.ToString(row.Cells(0).Value)
                Dim column2 As String = Convert.ToString(row.Cells(1).Value)
                Dim column3 As String = Convert.ToString(row.Cells(2).Value)

                If (TieneTemporal(column1, column2, column3)) Then

                    row.DefaultCellStyle.BackColor = Color.Green

                End If

            Next

    Es una sugerencia que te hago para que tu código esté a salvo de excepciones que posteriormente te pueden dar más de un dolor de cabeza. :-)

    Un saludo

     


    Enrique Martínez
      [MS MVP - VB]

    Saturday, March 26, 2011 4:28 PM
    Moderator
  • No hace nada sino especifico la fila si pone todo el datagridview1 en verde
    Monday, March 28, 2011 4:14 PM
  • Muchísimas gracias por la aplicación, lo voy a utilizar mucho
    Monday, March 28, 2011 4:15 PM
  • hola

    has validado so la funcion TieneTemporal() no esta devolviendo simrpe verdadero, lo cual implcia que pinte todas las filas del mismo color

    puedes poner un breakpoint en el codigo para pdoer inspeccionar por donde esta pasando

     

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
    Monday, March 28, 2011 4:42 PM
  • Lo he validado y si entra, he probado a poner una columna y si lo pone verde pero toda la columna y yo lo que necesito es la fila.
    Monday, March 28, 2011 5:15 PM
  • "vkjdbnvpoieqhg" escribió:

    > Lo he validado y si entra, he probado a poner una columna y si
    > lo pone verde pero toda la columna y yo lo que necesito es la
    > fila.

    ¡Vamos a ver! Si has ejecutado el siguiente código:

        row.DefaultCellStyle.BackColor = Color.CadetBlue

    se comprende que cambiará de color la FILA, no la columna, siempre y cuando la variable objeto «row» sea del tipo DataGridViewRow, tal y como así se encuentra definida en el bucle For Each.

    ¿Seguro que estás ejecutando lo que se te ha indicado que ejecutaras? ;-)


    Enrique Martínez
      [MS MVP - VB]

    Wednesday, March 30, 2011 3:02 PM
    Moderator