POO + DATAGRIDVIEW +COLUNAS FIXAS

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

POO + DATAGRIDVIEW +COLUNAS FIXAS

VB.NET

 Compartilhe  Compartilhe  Compartilhe
#473902 - 11/05/2017 18:53:38

MAXCIM
GUARULHOS
Cadast. em:Dezembro/2003


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




Resposta escolhida #473917 - 12/05/2017 12:56:02

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


Membro da equipe

 Anexos estao visíveis somente para usuários registrados

veja se consegue entender, se não conseguir, posta ae. divirta-se

_______________________________________________________________________
Gostaria de ter seu sistema Desktop "traduzido" para uma interface web? Podemos conversar...
Virei Oráculo!
The end is nigh, be ready for the nukes!


#473947 - 15/05/2017 09:47:21

MAXCIM
GUARULHOS
Cadast. em:Dezembro/2003


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.





#473957 - 15/05/2017 16:33:30

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


Membro da equipe
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.

_______________________________________________________________________
Gostaria de ter seu sistema Desktop "traduzido" para uma interface web? Podemos conversar...
Virei Oráculo!
The end is nigh, be ready for the nukes!


#473990 - 16/05/2017 11:17:14

MAXCIM
GUARULHOS
Cadast. em:Dezembro/2003


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.




#473993 - 16/05/2017 18:15:18

LLAIA
ITABORAI
Cadast. em:Maio/2009


É 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.

Leandro Laia  
“Quando tudo o que você tem é um martelo, todos os problemas parecem pregos”

#473994 - 16/05/2017 19:46:34

MAXCIM
GUARULHOS
Cadast. em:Dezembro/2003


é 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?



#473995 - 16/05/2017 21:01:37

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


Membro da equipe
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 (((SEU_OBJETO_NAS_LINHAS)linha.DataBoundItem).SUA_PROPRIEDADE_A_COMPARAR < 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.

_______________________________________________________________________
Gostaria de ter seu sistema Desktop "traduzido" para uma interface web? Podemos conversar...
Virei Oráculo!
The end is nigh, be ready for the nukes!


#474049 - 18/05/2017 09:14:42

MAXCIM
GUARULHOS
Cadast. em:Dezembro/2003


valeu kerplunk, acertou em cheio.
mais uma vez obrigado.

vou seguindo nessa jornada  mergulhando desse mundo POO.



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


Tópico encerrado, respostas não sao permitidas
Encerrado por MAXCIM em 18/05/2017 09:15:06