POO + DATAGRIDVIEW +COLUNAS FIXAS
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
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
veja se consegue entender, se não conseguir, posta ae. divirta-se
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.
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.
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.
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.
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.
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.
é 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.
é 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?
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?
Você pode usar o evento [Ô]CellFormatting[Ô] e o LINQ:
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.
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.
valeu kerplunk, acertou em cheio.
mais uma vez obrigado.
vou seguindo nessa jornada mergulhando desse mundo POO.
mais uma vez obrigado.
vou seguindo nessa jornada mergulhando desse mundo POO.
Tópico encerrado , respostas não são mais permitidas