Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

João Fernandes dos Santos

[Resolvido] Colorir Grid View com Coluna com Colunas de valores i

Recommended Posts

Pessoal bom dia.

 

Estou tentando colorir minha grid view de acordo com o conteúdo da célula.

 

Exempo tenho minha grid

 

Nomes

JOÃO

JOÃO

MARIA

MARIA

EMILLY

EMILLY

 

Quero que os nomes idênticos apareçam da mesma cor, e diferenciando um grupo de outro, pode ser até 2 cores tipo o Alternating da grid porém pegando todos os nomes idênticos.

 

Se alguêm tiver uma idéia, por favor me ajude. Desde ja obrigado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Vai dar um pouquinho de trabalho. A cada linha do grid você pode alimentar uma lista.

 

Eu criaria uma classe com duas propriedades, nome e cor.

 

Será necessário criar uma lista dessa classe, a cada registro da grid você verifica se na lista já tem esse nome, caso sim, só ver qual cor esta la e aplicar a grid, caso contrário escolha uma cor (vai fazer de forma aleatória?) e em seguida adicione a lista.

 

Abraços...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Vai dar um pouquinho de trabalho. A cada linha do grid você pode alimentar uma lista.

 

Eu criaria uma classe com duas propriedades, nome e cor.

 

Será necessário criar uma lista dessa classe, a cada registro da grid você verifica se na lista já tem esse nome, caso sim, só ver qual cor esta la e aplicar a grid, caso contrário escolha uma cor (vai fazer de forma aleatória?) e em seguida adicione a lista.

 

Abraços...

 

Quintelab Obrigado pela dica, estou seguindo elas. Porém estou encontrando dificuldades olha as 2 classes que criei:

   Protected Sub PintaGridPorGrupoFab(ByVal index As Integer)
       Dim NomeAplicacao As String = GridView1.Rows(index).Cells(1).Text

       For i = index To GridView1.Rows.Count - 1
           If GridView1.Rows(i).Cells(1).Text = NomeAplicacao Then
               GridView1.Rows(i).BackColor = System.Drawing.Color.Aqua
           Else
               PintaGridPorGrupoFab2(i)
           End If
       Next i

   End Sub
   Protected Sub PintaGridPorGrupoFab2(ByVal index As Integer)

       Dim NomeAplicacao As String = GridView1.Rows(index).Cells(1).Text

       For i = index To GridView1.Rows.Count - 1
           If GridView1.Rows(i).Cells(1).Text = NomeAplicacao Then
               GridView1.Rows(i).BackColor = System.Drawing.Color.Black
           Else
               PintaGridPorGrupoFab(i)
           End If
       Next i
   End Sub

 

e no Page Load eu coloco: PintaGridPorGrupoFab(0) para começar a pintar a grid e iniciar do índice 0.

 

Não esta dando erro porém ele pinta o primeiro grupo de Aqua, só que todos os outros grupos ele pinta de preto.

e no caso ele teria que ir alternando um grupo aqua, outro preto, um grupo aqua, outro preto.....

 

Deve ter algum erro de lógica mais até o momento não consegui achar, Manda um Help ai se poder, valeu.....

Compartilhar este post


Link para o post
Compartilhar em outros sites

Mas sua lógica esta errada:

 

Dim NomeAplicacao As String = GridView1.Rows(index).Cells(1).Text

 

If GridView1.Rows(i).Cells(1).Text = NomeAplicacao Then

 

Sempre vai ser true esta condição.

 

Abraços...

 

 

 

Não. acho que nesse ponto de vista eu não estou errado. pois aqui:

Dim NomeAplicacao As String = GridView1.Rows(index).Cells(1).Text

estou usando o index que vem da outra função.

 

 

e aqui

 

GridView1.Rows(i).Cells(1).Text = NomeAplicacao

 

estou usando o i que sempre vai alterar no next i .

 

O estranho é quando debugo ele faz o passo certinho vai de uma função para outra. porém colore somente o primeiro grupo e o restante fica com a cor da segunda função.

Compartilhar este post


Link para o post
Compartilhar em outros sites

É que a forma que você aplicou não tem nada a ver com a idéia que eu dei por exemplo. A cada nome diferente é um novo grupo de cor correto?

 

Abraços...

 

Quintelab desculpa me precipitei, o modo que eu tentei fazer foi a dica dada em outro forum.

 

Mas consegui resolver o meu problema, utilizando o SQL.

 

Fiz o seguinte.

 

Coloquei uma numeração para cada nome

 

JOÃO 1

MARIA 2

EMILLY 3

 

 

Joguei os nomes e a numeração em um cursor e fui fazendo o Looping todos os nomes joao ficaria com 1, todos os maria com 2 e todos os Emilly com 3.

 

Trouxe essa numeração na grid view, e coloquei as linhas com numeros par de uma cor e os impar de outra.

 

Resolvendo assim meu problema.

 

Mas obrigado pela dica.

 

 

Pode encerrar o tópico.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.