Jump to content
RobinHood

colorir data grid

Recommended Posts

RobinHood

boas pessoal eu estou a tentar colorir a data as linhas da data grid....

isto é eu tenho um campo na grid(entregue) que ou contem 0 ou 1 e o que eu queria era que todas as linhas que tivessem o valor 1 nesse campo ficassem coloridas de vermelho

e as que tivessem o valor 0 ficassem de azul.

eu estou a utilizar o seguinte código:

   Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click

' Inicia um ciclo em todas as linhas 
        For Each row As DataGridViewRow In Me.DataGridView1.Rows
            ' Caso não seja um nova linha (a última) 
            If Not row.IsNewRow Then
                ' Inicia um ciclo em todas as células/colunas da linha actual 
                For Each cell As DataGridViewCell In row.Cells
                    ' Verifica se a célula, , tem a palavra  
                   
                    ' e salta para a próxima  
                    If cell.Value.ToString.ToUpper.Contains("1") Then
                        With Me.DataGridView1.Rows(row.Index).DefaultCellStyle
                            .BackColor = Color.red

                        End With


                        Exit For
                    End If
                Next ' Fim do ciclo nas colunas
            End If
        Next ' Fim do ciclo nas linhas


    End Sub

mas este código faz com que as todas as linhas da data grid fiquem verdes....

será que o código está bem??? 🤔

estou a seguir este tutorial: http://vbtuga.blogspot.com/2008/04/vbnet-utilizando-o-controlo.html

Share this post


Link to post
Share on other sites
Caça

Não precisas deste ciclo

For Each cell As DataGridViewCell In row.Cells

Apenas tens de fazer a verificação à coluna onde está esse 0 e 1


Pedro Martins

Não respondo a duvidas por PM

Share this post


Link to post
Share on other sites
Andrepereira9

Boas

Tenta assim:

For Each row As DataGridViewRow In Me.DataGridView1.Rows
            If Not row.IsNewRow Then
                For Each cell As DataGridViewCell In row.Cells
                    If cell.Value.ToString = "0" Then

                        With Me.DataGridView1.Rows(row.Index).DefaultCellStyle
                            .BackColor = Color.Blue
                        End With
                        Exit For

                    ElseIf cell.Value.ToString = "1" Then

                        With Me.DataGridView1.Rows(row.Index).DefaultCellStyle
                            .BackColor = Color.Red
                        End With
                        Exit For

                    End If

                Next

            End If

        Next


A informática chegou para resolver problemas que antes não existiam

Quem ri por último é porque está conectado a 52 Kbs.

Share this post


Link to post
Share on other sites
RobinHood

Sim... esse código funciona... mas preenche tudo a vermelho.... e eu tenho valores de 0 nessa coluna...

Share this post


Link to post
Share on other sites
Andrepereira9

Tenta assim.

Este mete a linha toda a vermelho ou a azul. O objectivo é por toda a linha ou só a coluna do número?

Basta indicares qual é a posição da coluna em que estão os números.

Exemplo

Id  |  Nome  |  Morada      -> Colunas

1          2              3              -> Posição na datagrid

0          1              2              -> Modo de te referenciares a essa coluna

Neste exemplo a coluna Nome, é a 2º coluna, mas para trabalhares com ela por código, é a 1º. Pois em código a posição começa em 0

 For Each row As DataGridViewRow In Me.DataGridView1.Rows
            If Not row.IsNewRow Then

                'row.Cells(1) o numero 1 significa que é a segunda coluna da datagrid
                ' Ve em que posição está a coluna com o número e descontas 1
                If row.Cells(1).Value.ToString = "0" Then

                    With Me.DataGridView1.Rows(row.Index).DefaultCellStyle
                        .BackColor = Color.Blue
                    End With

                    'row.Cells(1) o numero 1 significa que é a segunda coluna da datagrid
                    ' Ve em que posição está a coluna com o número e descontas 1
                ElseIf row.Cells(1).Value.ToString = "1" Then

                    With Me.DataGridView1.Rows(row.Index).DefaultCellStyle
                        .BackColor = Color.Red
                    End With

                End If

            End If
        Next


A informática chegou para resolver problemas que antes não existiam

Quem ri por último é porque está conectado a 52 Kbs.

Share this post


Link to post
Share on other sites
bioshock
  For Each rows As DataGridViewRow In Me.DataGridView1.Rows
            If Me.DataGridView1.Rows(rows.Index).Cells(0).Value = "ola" Then
                If Not Me.DataGridView1.Rows(rows.Index).Cells(0).Style.BackColor = Color.Black Then
                    Me.DataGridView1.Rows(rows.Index).Cells(0).Style.BackColor = Color.Black
                End If
            End If
        Next

Share this post


Link to post
Share on other sites
RobinHood

Tenta assim.

Este mete a linha toda a vermelho ou a azul. O objectivo é por toda a linha ou só a coluna do número?

Tipo ele meta a linha toda a vermelho... e é isso que eu quero, mas todas as outras da data grid que também não têm o valor 1 ficam a vermelho.

.......

Sim eu sei que

Pois em código a posição começa em 0

Sim eu sei que começa em código sempre em zero.....

Obrigado... funciona  :D:thumbsup: ás 5* ;) o código que forneceste André

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.