FORMATAR LINHA DO DATAGRIDVIEW

 Tópico anterior Próximo tópico Novo tópico

FORMATAR LINHA DO DATAGRIDVIEW

VB.NET

 Compartilhe  Compartilhe  Compartilhe
#495971 - 30/12/2020 21:06:26

IVANPI
GUAPIARA
Cadast. em:Janeiro/2017


oa noite pessoal!

Preciso de uma ajuda, com o seguinte:

Tenho um DataGridView, onde uma coluna tem o total de votos, ocorre que, se caso esse total se repetisse em alguma linha, ele formatasse a linha, e alterasse o texto de outra coluna. Exemplo:

Se na coluna TOTAL, apresentasse dois valores  25, na coluna ORDEM, retornasse EMPATE, e colorir essas duas linhas.

Achei um código, mas não consigo adaptá-lo:


Private Sub DataGridView_CellFormatting(sender As Object, e As DataGridViewCellFormattingEventArgs) Handles DataGridView.CellFormatting
        If e.ColumnIndex = 3 Then

            If (e.Value IsNot Nothing) And (e.Value.ToString() = 2) Then   '<-- SÓ COLOQUEI e.Value.ToString() 2 PARA TESTAR
                e.Value = 'EMPATE'

                e.CellStyle.BackColor = Color.Orange

                Dim oRow As DataGridViewRow = dgvApuracao.Rows(e.RowIndex)
                oRow.DefaultCellStyle.BackColor = Color.Orange
            End If
        End If
End Sub


Na ColumnIndex 3 ele retornou EMPATE e coloriu a linha, mas precisava que retornasse EMPATE na ColumnIndex 0, só quando houvesse valores repetidos na ColumnIndex 3.

Agradeço desde já a ajuda.

Ivan Jpi






Resposta escolhida #495978 - 01/01/2021 12:13:27

TUNUSAT
SAMPA
Cadast. em:Dezembro/2003


Ivan,

   Montei duas formas de fazer:

Private Sub btnComparaValor2_Click(sender As Object, e As EventArgs) Handles btnComparaValor2.Click
    Dim dt1 As DataGridView = DataGridView1

    If DataGridView1.Rows.Count > 1 Then

        For Each row As DataGridViewRow In DataGridView1.Rows

            For i As Integer = (row.Index + 1) To dt1.Rows.Count - 1

                If row.Cells.Item('Nome').Value = dt1.Rows(i).Cells('Nome').Value Then
                    DataGridView1.Rows(i).Cells('Nome').Style.BackColor = Color.Gainsboro
                    DataGridView1.Rows(i).Cells('Observacao').Value = 'EMPATE'

                    DataGridView1.Rows(row.Index).Cells('Nome').Style.BackColor = Color.Gainsboro
                    DataGridView1.Rows(row.Index).Cells('Observacao').Value = 'EMPATE'
                End If

            Next

        Next

    End If

End Sub


Aqui na '3' usei o 'For Each' e o 'Fin', mas o Find é do 'Dataview':

Private Sub btnComparaValor3_Click(sender As Object, e As EventArgs) Handles btnComparaValor3.Click
    Dim dv1 As New DataView()
    Dim intIndex As Integer
    Dim strNome As String

    dv1 = CType(DataGridView1.DataSource, DataView)
    dv1.Sort = 'Nome ASC'

    If DataGridView1.Rows.Count > 1 Then

        For Each row As DataGridViewRow In DataGridView1.Rows

            strNome = row.Cells.Item('Nome').Value
            intIndex = dv1.Find(strNome)

            If intIndex <> row.Index And intIndex <> -1 Then
                DataGridView1.Rows(intIndex).Cells('Nome').Style.BackColor = Color.Gainsboro
                DataGridView1.Rows(intIndex).Cells('Observacao').Value = 'EMPATE'

                DataGridView1.Rows(row.Index).Cells('Nome').Style.BackColor = Color.Gainsboro
                DataGridView1.Rows(row.Index).Cells('Observacao').Value = 'EMPATE'
            End If

        Next

    End If

End Sub


[]'S,
Tunusat.

Haja, pois, o que houver, ampliem-se obstáculos, agigantem-se problemas, intensifiquem-se lutas ou se agravem provações, trabalha sempre no bem de todos, porque, trabalhando na Seara do Bem, podes conservar a certeza de que Deus te sustentará. Emmanue

#495980 - 01/01/2021 15:47:27

OMAR2011
MONTES CLAROS
Cadast. em:Setembro/2011


Show mesmo.Valeu e muito.



#495982 - 01/01/2021 20:54:23

TUNUSAT
SAMPA
Cadast. em:Dezembro/2003


Última edição em 01/01/2021 20:55:08 por TUNUSAT

Ivan,

    Legal que deu certo, por favor não esqueça de me pontuar... de novo! KKKKK!!!

Omar,

    Valew!

[]'s,
Tunusat.

Haja, pois, o que houver, ampliem-se obstáculos, agigantem-se problemas, intensifiquem-se lutas ou se agravem provações, trabalha sempre no bem de todos, porque, trabalhando na Seara do Bem, podes conservar a certeza de que Deus te sustentará. Emmanue

#495983 - 01/01/2021 22:10:08

IVANPI
GUAPIARA
Cadast. em:Janeiro/2017


Citação:
:
Ivan,

    Legal que deu certo, por favor não esqueça de me pontuar... de novo! KKKKK!!!

Omar,

    Valew!

[]'s,
Tunusat.


Rapaz, deu muito certo mesmo, mais uma vez meu obrigado, e ainda por cima, disponibilizou outra forma :).
Que 2021, seja melhor que 2020, e não melhor que 2022.

Deus abençoe.

Ivan Jpi



 Tópico anterior Próximo tópico Novo tópico


Tópico encerrado, respostas não sao permitidas
Encerrado por IVANPI em 01/01/2021 22:10:29