POO + DATAGRIDVIEW +COLUNAS FIXAS

MAXCIM 11/05/2017 18:53:38
#473902
Olá amigos.

tenho meus pedidos ( vendas, compras, requisições entre outros) com grid editável.
onde o usuário imputa os dados diretamente no grid, linha a linha coluna a coluna .

as colunas tem seus campos programados ( busca e inserção de dados, campos para aceitar somente números... calcula de valores e impostos ao digitar entre outros)

tudo funciona bem... porem hora de aplicar POO ( venho fazendo isso no projeto e chegou a hora de aplicar POO aos pedidos)

Mas como aplicar uma Classe List of(...) a um grid com colunas já criadas e fixas?

como interagir ( digitou no grid) possa calcular nos eventos da classe?

testei com datagridview seguindo o as vídeo aulas do mestre kerplunk , porém o grid estava vazio e assumia as colunas da classe.

desde já agradeço
KERPLUNK 12/05/2017 12:56:02
#473917
Resposta escolhida
veja se consegue entender, se não conseguir, posta ae. divirta-se
MAXCIM 15/05/2017 09:47:21
#473947
Olá amigos, obrigado pelas respostas..

já tenho aplicado alguns conceitos POO ao sistema...

me deparei com dois problemas:

1) um form com inserção de dados direto no grid..como eu utilizo a classe?
( toda parte onde tem datagridview.rows.add(item) dá erro. como ficaria ?

2) como busco itens na classe( linq) usando o where e identifico o índice das linhas no datagridview?
preciso alterar a cor de algumas linhas de acordo com o status.

KERPLUNK 15/05/2017 16:33:30
#473957
Mais uma vez, a questão é de conceito:
1 - O que aparece no grid é sempre a representação dos dados da fonte de dados, no caso uma List<T>. Portanto, o índice da linha é irrelevante, o que você precisa é de um identificador para cada ítem, um campo código por exemplo.
2 - A inserção de dados deve ser tarefa do backend, que nesse caso é o LINQ, mas poderia perfeitamente ser um entity framework que é o que recomendo usar. Com isso, o que aparecer no grid é exatamente o que estará na tabela, e o que fizer no grid, vai também refletir na tabela.
MAXCIM 16/05/2017 11:17:14
#473990
Oi Kerplunk.

inserir os dados ai não seria tarefa pro entity framework, estou montando um pedido ( pedido de venda / pedido de compras) os dados são inseridos pelo usuário direto no grid.
( busca/insere o produto, preenche Qtd, desconto e outros dados.


preciso pintar as linhas no grid de acordo com o status . sempre percorri o grid analisando linha por linha e aplicando cor conforme o status do lançamento.
agora com o Linq List<T> um simples where traz todos os registro com aquela condição...
mas como eu aplico a cor a linha do grid.

ainda não to entendendo essa relação grid x linq.
LLAIA 16/05/2017 18:15:18
#473993
é necessário saber separar as responsabilidades. Vc pode delegar pra outro objeto ou a um método a responsabilidade de pintar as linhas. O trabalho do LINQ é manipular os dados.
MAXCIM 16/05/2017 19:46:34
#473994
é justamente isso que não estou sabendo fazer...

o trabalho do LINQ é manipular os dados... certo... tenho os dados, os status e uma consulta que retorna dados que atendem a essa consulta.

quando eu adicionava linhas ao grid ( linha a linha) eu ia testado o status e mudado a cor de acordo.

mas agora o grid recebe o linq pelo datasource...

qual seria o objeto ou método responsável de pintar as linhas?
KERPLUNK 16/05/2017 21:01:37
#473995
Você pode usar o evento [Ô]CellFormatting[Ô] e o LINQ:

dataGridView2.CellFormatting += DataGridView2_CellFormatting;


private void DataGridView2_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)
{
foreach (DataGridViewRow linha in dataGridView2.Rows)
if ((([txt-color=#e80000]SEU_OBJETO_NAS_LINHAS[/txt-color])linha.DataBoundItem).[txt-color=#e80000]SUA_PROPRIEDADE_A_COMPARAR [/txt-color]< 2)
{
linha.DefaultCellStyle.BackColor = Color.Red;
}
else
{
linha.DefaultCellStyle.BackColor = Color.Green;
}
}


Observe o que destaquei em vermelho. Eles são, respectivamente, o tipo(objeto) em cada uma das linhas e a propriedade que quer verificar. Mude apropriadamente, de acordo com seu modelo. Também a condicional para mudar a formatação da linha, no exemplo, caso o valor da propriedade seja maior que 2, pinto a linha de verde, senão, de vermelho.
MAXCIM 18/05/2017 09:14:42
#474049
valeu kerplunk, acertou em cheio.
mais uma vez obrigado.

vou seguindo nessa jornada mergulhando desse mundo POO.
Tópico encerrado , respostas não são mais permitidas