COLORIR DATAGRIDVIEW PREENCHIDO COM DATASOURCE

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

COLORIR DATAGRIDVIEW PREENCHIDO COM DATASOURCE

VB.NET

 Compartilhe  Compartilhe  Compartilhe
#496806 - 23/04/2021 11:45:44

DAMASCENO.CESAR
ADAMANTINA
Cadast. em:Fevereiro/2009


Bom dia,
Tenho um DataGridView que preencho usando  o método:
Grid.DataSource = List (aqui poderia ser um reader também)
este Grid está vinculado à um objeto do projeto como fonte de dados.
até aí, normal, pois uso essa vinculação para ajustar as colunas e formato de saída de dados.
Preciso colorir as linhas do DataGridView conforme algumas condições, tentei da forma abaixo mas as linhas manteram o padrão do grid, sem alcançar os resultados esperados.

  For a = 0 To DgvResposta.Rows.Count - 1
                Dim dta As Date
                dta = Format(DgvResposta.Rows(a).Cells('Prazo').Value, 'dd/MM/yyyy')
                If dta = Today Then
                    DgvResposta.Rows(a).DefaultCellStyle.BackColor = Color.LightGreen
                ElseIf dta < Today Then
                    DgvResposta.Rows(a).DefaultCellStyle.BackColor = Color.Red
                End If
    Next


o grid sempre terá poucas linhas, se atingir 50 linhas será um recorde!

A grande pergunta é:
Há uma maneira de colorir o grid usando método DataSource ou tenho que realizar um preenchimento linha a linha??



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


#496807 - 23/04/2021 12:13:47

OMAR2011
MONTES CLAROS
Cadast. em:Setembro/2011


Não importa a forma como preenche.
O que vale é o Valor da Cell.
Use o For Each, muito mais adequado.
Um a um ,Jamais.



Resposta escolhida #496808 - 23/04/2021 15:00:03

KERPLUNK
RIO GRANDE DO SUL
Cadast. em:Junho/2009


Membro da equipe
Primeiramente, se preencher o seu grid com uma List<T> de um objeto, facilita em muito o que você quer fazer.
Eu usaria o evento CellFormatting e ir pintando conforme preenche, assim, não precisa executar nada depois de preencher.
Então ficaria algo assim:

private void dataGridView_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)
{
    DataGridView dgv = sender as DataGridView;

    if (dgv.Columns[e.ColumnIndex].Name.Equals('Prazo'))
    {
        if (e.Value != null && e.Value.ToString().Trim() == 'Male')
        {
            dgv.Rows[e.RowIndex].Cells['name'].Style.BackColor = Color.White;
        }
        else
        {
            dgv.Rows[e.RowIndex].Cells['name'].Style.BackColor = Color.DarkGray;
        }
    }

}


_______________________________________________________________________
Virei Orculo!
The end is nigh, be ready for the nukes!


#496809 - 23/04/2021 15:01:04

KERPLUNK
RIO GRANDE DO SUL
Cadast. em:Junho/2009


Membro da equipe
E OMAR, o foreach é também ir de um em um, a diferença é que é tipado.

_______________________________________________________________________
Virei Orculo!
The end is nigh, be ready for the nukes!


#496821 - 26/04/2021 11:47:12

DAMASCENO.CESAR
ADAMANTINA
Cadast. em:Fevereiro/2009


Bom dia,
Desculpem a demora em responder.
OMAR,
até onde eu sei, se usar o For Each ou o For a=0 não faria diferença, mas, obrigado pela dica do For Each, preciso me acostumar a usá-lo.

KERP,
no CellFormating retornou o resultado desejado, obrigado



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 26/04/2021 11:47:23