• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

esquima

[RESOLVIDO][vb.net] Colorir linhas de uma datagrid

12 mensagens neste tópico

Boas eu carrego uma datagrid com dados da minha bd...agora queira por todas as linhas a vermelho que tivessem o estado = Fechado

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Faz assim

No while em que preenches a Datagrid, ou coisa similar mete assim:

If (DataGridView1.Item("estado", i).Value.ToString() = "Fechado") Then
DataGridView1.Rows(i).DefaultCellStyle.BackColor = Color.Red
End If

Nota: eu usei a var i como contador do index da linha actual.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Uma datagrid... ja agora qual e a diferença de uma datagrid e uma datagrid view

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Poisss.. e que eu tou a usar o vb.2003 e n tem o datagridview pois so ha no 2005...vou ter mesmo de trabalhar com datagrid

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

ja tou farto de pesquisar e n encontro nada para vb.2003, para o que quero fazer  :wallbash:

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Public Class DataGridColoredTextBoxColumn
     Inherits DataGridTextBoxColumn

     Public Sub New()
     End Sub

     Protected Overloads Overrides Sub Paint(ByVal g As Graphics, ByVal bounds As Rectangle, ByVal source As CurrencyManager, ByVal rowNum As Integer, ByVal backBrush As Brush, ByVal foreBrush As Brush, ByVal alignToRight As Boolean)

     ' the idea is to conditionally set the foreBrush and/or backbrush
     ' depending upon some crireria on the cell value
     ' Here, we color anything that begins with a letter higher than 'F'
     Try
          Dim o As Object
          o = Me.GetColumnValueAtRow(source, rowNum)
          If (Not (o) Is Nothing) Then
               Dim c As Char
               c = CType(o, String).Substring(0, 1)
               If (c > "F") Then
                     ' could be as simple as
                    ' backBrush = new SolidBrush(Color.Pink);
                    ' or something fancier...
                    backBrush = New LinearGradientBrush(bounds, Color.FromArgb(255, 200, 200), Color.FromArgb(128, 20, 20), LinearGradientMode.BackwardDiagonal)
                    foreBrush = New SolidBrush(Color.White)
               End If
          End If
          Catch ex As Exception
               ' empty catch
          Finally
               ' make sure the base class gets called to do the drawing with
                ' the possibly changed brushes
               MyBase.Paint(g, bounds, source, rowNum, backBrush, foreBrush, alignToRight)
          End Try

     End Sub
End Class 

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Não tinha reparado que era DataGrid e não DataGridView...

Vb.net 2003 realmente é bem mais complicado de fazer isso

UPGRADE para VB.NET 2005!!!!

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Poisss..ja vi que e bem mais dificil...vou passar para 2005 depois deste projecto..agora n vem convem fazer o upgrade...entrentanto continuo entalado com isto  :)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

porque é que em vez de usares uma datagrid não usas uma listview?

pelo menos e um concelho que te dou que fica muito melhor esteticamente :)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Pessoal...mudei para o vb.2005..bem mais facil trabalhar com as datagridview...ja consegui me orientar a colorir as linhas conforme o meu estado=fechado....se no futuro alguem precisar apitem  :)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora