Loading
PauloHDSousa - Desenvolvedor: Dicas - DataGridView

sexta-feira, 27 de janeiro de 2012

Dicas - DataGridView


Aprenda a realizar operações importantes no seu DataGridView

Antes de tudo, é importante saber da existencia deste link
Inglês
Português

Nele você vai encontrar todas as propriedades,métodos e Eventos do seu DataGridView
E a explicação de uma por uma.

Durante a explicação

SeuDataGridView = Nome do seu DataGridView
"SuaColuna" = Nome da coluna que está a informação que você quer pegar.


Como pegar o valor de uma célula em uma linha selecionada ?

Existem vários modos, um bom modo é  usar o evento CellEnter
Evento públicoCellEnterOcorre quando o célula corrente alterações noDataGridView controle ou quando o controle recebe o foco de entrada.


Isso quer dizer, quando o Foco passar na linha ou célula, o evento irá acontecer, ele é bom para pegar dados de maneira eficiente.


 Private Sub SeuDataGridView_CellEnter(sender As System.Object, e As System.Windows.Forms.DataGridViewCellEventArgs) Handles SeuDataGridView.CellEnter

Dim Informacao As String
        If SeuDataGridView .Rows.Count > 0 Then

      Informacao  = SeuDataGridView.CurrentRow.Cells("SuaColuna").Value.ToString()

        End If

   End Sub



Simples assim.
Lembrando que os dados dentro do DataGridView podem ser datas,decimais então vamos prestar atenção na hora de atribuir o valor a variável.

Como colorir uma linha com base em uma condição

Existem também "N" maneiras de se fazer isso, a maneira que eu recomendo é criar uma funcão VOID   que leia TODA A GRADE para pintar a grade com base na condição que você escolher.

Mas, por que não usar o CellEndEdit?

Evento públicoCellEndEditOcorre quando a célula selecionada sai do modo de edição.


Vamos usar Sim o CellEndEdit, mas não apenas ele.
A explicação é a seguinte, você editou a célula,  você chama o seu Atualiza_Cores_Grade.

A grade vai ficar da cor com base na condição.

Mas o que vai acontecer quando você abrir o formulário novamente ? 

Isso mesmo, ela vai ficar com a cor normal.

Por isso criamos uma função para que toda vez que o Formulário carregar ele verificar e pintar as 

linhas conforme a condição

Função:
private void Atualiza_Cores_Grade()
        {
            try
            {

                foreach (DataGridViewRow r in SeuDataGridView.Rows)
                {

                    if (Convert.ToDecimal(SeuDataGridView["Preço", r.Index].Value) < Convert.ToDecimal(SeuDataGridView["Preço_Minimo", r.Index].Value))
                    {
                        SeuDataGridView.Rows[r.Index].DefaultCellStyle.BackColor = Color.Red;
                    }
                    else
                    {
                        SeuDataGridView.Rows[r.Index].DefaultCellStyle.BackColor = Color.LightGoldenrodYellow;

                    }
                }
            }


Repare que 

if CONDIÇÃO = TRUE 
Linha fica vermelha
Else
Linha fica amarela
End if

Pode ser substituido para outra condição.


Onde deve ser colocada:
No evento Load do Formulário
No evento CellEndEdit do Formulário
E aonde você achar necessário.

Definindo valor a uma célula


Nenhum comentário: