COR NO DATAGRIDVIEW APS FILTRO

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

COR NO DATAGRIDVIEW APS FILTRO

VB.NET

 Compartilhe  Compartilhe  Compartilhe
#489060 - 31/05/2019 15:55:16

DAMASCENO.CESAR
ADAMANTINA
Cadast. em:Fevereiro/2009


Boa tarde,
tenho um DataGridView preenchido e com linhas coloridas de acordo com alguns critrios, mas quando realizo um filtro com o bindingsource, o DataGridView retorna sem as cores
Existe uma maneira de manter essas cores ou necessito realizar a rotina de colorao novamente?
Se s for possvel manter as cores com a rotina, melhor abandonar as cores, pois o tempo de resposta ficaria muito grande

Obrigado

O conhecimento como o dinheiro: quanto mais temos, mais queremos ter (Josh Billings)  


#489072 - 01/06/2019 05:05:02

COQUITO
BELO HORIZONTE
Cadast. em:Junho/2014


vou disponibilizar meu codigo de como eu uso,

    Private Sub CoresNaGrid()
        Try
            For i As Integer = 0 To dgvDados.Rows.Count - 1
                If dgvDados.Rows(i).Cells(5).Value = []1[] Then
                    dgvDados.Rows(i).DefaultCellStyle.BackColor = Color.White
                    dgvDados.Rows(i).DefaultCellStyle.ForeColor = Color.Black

                Else
                    dgvDados.Rows(i).DefaultCellStyle.BackColor = Color.Crimson
                    dgvDados.Rows(i).DefaultCellStyle.ForeColor = Color.White

                End If
            Next

        Catch ex As Exception
            MsgBox(ex.Message)
        End Try

    End Sub

a rotinha q eu estou fazendo o seguinte se a celula for 1(true) fica nessa cor a linha se nao cambie
eu nao tenho problema quando fao um filtro ou algo pesquisa na minha grid, unico problema dele apenas quando for abrir o form ele nao carrega o q e estranho mais isso j meu erro, vai em teu caso qe ajude



Deus melhor amigo meu...


Resposta escolhida #489079 - 02/06/2019 11:16:15

CLEVERTON
SERRINHA
Cadast. em:Dezembro/2003


Membro da equipe
Usa o evento CellPainting ?



#489080 - 03/06/2019 08:30:03

DAMASCENO.CESAR
ADAMANTINA
Cadast. em:Fevereiro/2009


Desculpem a demora em responder, tava sem pc esse fds, rsrsrs

COQUITO, minha rotina pra por a cor essa, mas ao usar o bindingsource, as linhas voltam ao padro, j que o datagrid abastecido por: grid.datasource=bindingsource
abasteo um datatable com  os dados, depois seto(no sei se este termo ainda usado rsrsrs) o bindingsource com o datatable e depois seto o grid com o bindingsource.

CLEVERTON, no uso o cellpainting pra colorir, s usei o cellpainting quando coloco imagem na coluna boto do grid, pra colocar imagem
voc me deu uma ideia, vou testar e depois posto o resultado.



O conhecimento como o dinheiro: quanto mais temos, mais queremos ter (Josh Billings)  


#489081 - 03/06/2019 08:56:50

OMAR2007
MONTES CLAROS
Cadast. em:Maio/2019


A questo voc no postou o cdigo para colorir de como est disposto.
O cdigo visto que tu sabe onde colocar,por acaso no est antes do preenchimento.



#489084 - 03/06/2019 09:41:04

CLEVERTON
SERRINHA
Cadast. em:Dezembro/2003


Membro da equipe
Public Class Form1

    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        Dim lista As List(Of Pessoa) = New List(Of Pessoa)

        For index = 1 To 10
            lista.Add(New Pessoa(17, []JOO[]))
            lista.Add(New Pessoa(22, []MARIA[]))
            lista.Add(New Pessoa(19, []JOS[]))
        Next

        DataGridView1.DataSource = lista
    End Sub

    Private Sub DataGridView1_CellPainting(sender As Object, e As DataGridViewCellPaintingEventArgs) Handles DataGridView1.CellPainting
        If (e.ColumnIndex = 0) Then
            If (e.RowIndex > -1) Then
                If (e.Value > 17) Then
                    DataGridView1.Rows(e.RowIndex).Cells(e.ColumnIndex).Style.ForeColor = Color.Red
                End If
            End If

        End If
    End Sub
End Class

Public Class Pessoa
    Public Property Idade As Integer
    Public Property Nome As String

    Public Sub New(_idade As Integer, _nome As String)
        Me.Idade = _idade
        Me.Nome = _nome
    End Sub


End Class




#489087 - 03/06/2019 14:16:54

DAMASCENO.CESAR
ADAMANTINA
Cadast. em:Fevereiro/2009


OMAR, no, o cdigo no est antes do preenchimento, primeiro (no load do form) abasteo o grid depois uso um for pra testar as linhas e colorir, estilo o cdigo do COQUITO.
      

CLEVERTON, seu cdigo muito bom, funcionou bem, mas preciso fazer alguns ajustes para meu uso, j que baseio as cores em duas colunas
  Dim DT As New DataTable
            BsVisi = New BindingSource
            DT.Columns.Add([]ID[])
            DT.Columns.Add([]Tipo[])
            DT.Columns.Add([]Matricula[])
            DT.Columns.Add([]Nome[])
            DT.Columns.Add([]Parente[])
            DT.Columns.Add([]Idade[])
            DT.Columns.Add([]Situacao[])
            Using ViUni As New VisitaUnida
                Dim lst As New List(Of VisitaUnida)
                lst = ViUni.LstVisiUnida()
                If lst Is Nothing Then
                    MsgBox([]Erro na obteno de dados![])
                    Exit Sub
                End If
                For a = 0 To lst.Count - 1
                    Dim IDADE
                    If lst.Item(a).Nascimento > []01/01/0001[] Then
                        IDADE = CalculaIdade(lst.Item(a).Nascimento)
                    Else
                        IDADE = [][]
                    End If

                    Dim Situa As String = []EXCLUIDA[]

                    If lst.Item(a).Tipo = []CASA[] Then
                        If lst.Item(a).Pendente = -1 Then
                            Situa = []AUTORIZADO[]
                            If lst.Item(a).Parlatorio = -1 Then
                                Situa = []AUT. PARLAT.[]
                            End If
                        End If
                        If lst.Item(a).Date_Sus > Today Then
                            Situa = []SUSPENSA[]
                        End If
                        If lst.Item(a).Excluida = -1 Then
                            Situa = []EXCLUIDA[]
                        End If
                    End If
                    DT.Rows.Add(lst.Item(a).ID, lst.Item(a).Tipo, lst.Item(a).Matricula, lst.Item(a).Nome, lst.Item(a).Parente, idade, Situa)
                Next
                DT.DefaultView.Sort = []Nome ASC[]
                BsVisi.DataSource = DT
                DgvVisi.DataSource = BsVisi
                For a = 0 To DgvVisi.Rows.Count - 1
                    If DgvVisi.Rows(a).Cells([]Tipo[]).Value = []FORA[] Then
                        DgvVisi.Rows(a).DefaultCellStyle.BackColor = Color.Red
                    Else
                        If DgvVisi.Rows(a).Cells([]Situacao[]).Value = []AUTORIZADO[] Or DgvVisi.Rows(a).Cells([]Situacao[]).Value = []AUT. PARLAT.[] Then
                            DgvVisi.Rows(a).DefaultCellStyle.BackColor = Color.LightGreen
                        End If
                        If DgvVisi.Rows(a).Cells([]Situacao[]).Value = []SUSPENSA[] Then
                            DgvVisi.Rows(a).DefaultCellStyle.BackColor = Color.SlateBlue
                        End If
                        If DgvVisi.Rows(a).Cells([]Situacao[]).Value = []EXCLUIDA[] Then
                            DgvVisi.Rows(a).DefaultCellStyle.BackColor = Color.Orange
                        End If
                    End If

                Next
            End Using

Ao filtrar por essa linha no TEXTCHANGE
BsVisi.Filter = []Nome LIKE []%[] & TxtNome.Text & []%[][]
As cores somem.

CLEVERTON, seu cdigo me ajudou muito, mas preciso fazer umas adaptaes pois testo duas colunas diferentes rsrs
quando terminar, posto o resultado do cellpainting


O conhecimento como o dinheiro: quanto mais temos, mais queremos ter (Josh Billings)  


#489093 - 03/06/2019 19:45:40

COQUITO
BELO HORIZONTE
Cadast. em:Junho/2014


j tentou ver se o bloco que faz a pesquisa esta a formtao da grid? rsrsrs as acontesce

Deus melhor amigo meu...


#489097 - 04/06/2019 09:06:11

DAMASCENO.CESAR
ADAMANTINA
Cadast. em:Fevereiro/2009


COQUITO,  o filtro vai aqui:
   Private Sub TxtNome_TextChanged(sender As Object, e As EventArgs) Handles TxtNome.TextChanged
                  BsVisi.Filter = []Nome LIKE []%[] & TxtNome.Text & []%[][]
       End Sub


Mas com a ajuda do CLEVERTON cheguei ao resultado que queria, pena que ao filtrar usando o cdigo acima, o grid d umas piscadas, por alterar a quantidade e a posio das linhas, mas foi bem proveitoso
o resultado no cell painting ficou assim:

  Private Sub DgvVisi_CellPainting(sender As Object, e As DataGridViewCellPaintingEventArgs) Handles DgvVisi.CellPainting
        If e.ColumnIndex = 2 Then
            If (e.RowIndex > -1) Then
                DgvVisi.Rows(e.RowIndex).Cells(e.ColumnIndex).Style.Alignment = DataGridViewContentAlignment.MiddleRight
            End If
        End If
        If e.ColumnIndex = 6 Then
            If (e.RowIndex > -1) Then
                If e.Value = []AUTORIZADO[] Or e.Value = []AUT. PARLAT.[] Then
                    DgvVisi.Rows(e.RowIndex).DefaultCellStyle.BackColor = Color.LightGreen
                End If
                If e.Value = []SUSPENSA[] Then
                    DgvVisi.Rows(e.RowIndex).DefaultCellStyle.BackColor = Color.SlateBlue
                End If
                If e.Value = []EXCLUIDA[] Then
                    DgvVisi.Rows(e.RowIndex).DefaultCellStyle.BackColor = Color.Orange
                End If
                If e.Value = []EXCLUIDA SIST.[] Then
                    DgvVisi.Rows(e.RowIndex).DefaultCellStyle.BackColor = Color.Red
                End If
            End If

        End If
    End Sub


Fiz umas alteraes no preenchimento para poder conseguir o resultado desejado, no afetando os dados exibidos


O conhecimento como o dinheiro: quanto mais temos, mais queremos ter (Josh Billings)  


#489104 - 04/06/2019 13:43:37

DAMASCENO.CESAR
ADAMANTINA
Cadast. em:Fevereiro/2009


Pessoal, obrigado pela ajuda de todos, como atingi o objetivo estou encerrando o tpico


O conhecimento como o dinheiro: quanto mais temos, mais queremos ter (Josh Billings)  


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


Tópico encerrado, respostas não sao permitidas
Encerrado por DAMASCENO.CESAR em 04/06/2019 13:43:46