POPULRA DATAGRIDVIEW

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

POPULRA DATAGRIDVIEW

VB.NET

 Compartilhe  Compartilhe  Compartilhe
#478820 - 02/01/2018 15:35:10

MOREIRA
SAO LUIS - TURU
Cadast. em:Agosto/2004


Última edição em 02/01/2018 15:37:22 por MOREIRA

Citação:
:
Então, ótimo! Vamos lá:
O  que você precisa entender é que um DataGrid é apenas uma representação de dados. Veja uma planilha do excel por exemplo, com dados de cliente, tipo Código, nome e data de cadastro. Quando você coloca esses dados linha à linha, você tem uma planilha normal, mas você consegue visualizar mentalmente esses mesmos dados em uma forma não linear. O que estou fazendo no exemplo que passei, é basicamente isso. Estou criando uma entidade, com algumas propriedades, adicionando instâncias desses dados em uma List<T> e passando essa List<T> como sendo os dados que devem ser exibidos no grid. Cada instância deve ser única(idealmente) para ter uma representação coerente de dados. Veja bem o que você está fazendo:

dados.Add(New Dados)
        dados.Add(New Dados)
        dados.Add(New Dados)
        dados.Add(New Dados)
        dados.Add(New Dados)



"New Dados" é uma nova instância do objeto(entidade) "Dados", que você está adicionando ao seu List<Dados> até aqui está quase lá, o que você precisa é colocar dados nesse instância. O caso é que o código convertido não está fazendo isso. Seria algo como:

dados.Add(New Dados() With { .Codigo = 1, .Nome = "Joao"  })
dados.Add(New Dados() With { .Codigo = 2, .Nome = "Maria"  })
dados.Add(New Dados() With { .Codigo = 1, .Nome = "Pedro"  })


E essa é uma das razões de eu não usar(aliás quase ninguém, em se falando de mundo corporativo) o dialeto VB.NET, ele  não é muito intuitivo e nem muito prático.



De fato preciso estudar OOP.
Bom, nesse caso já tenho dados  instanciado no objeto.
Até aí, começando a entender.
Ao tentar enviar o mesmo registro para agrid, nao é criado uma nova row.

Tendo apenas essa linha de código.

dados.Add(New Dados() With { .Codigo = 1, .Nome = "Joao"  })


Ou seja, ja tem um registro, preciso adicionar o segundo. Terceiro... Ltda......






Eu não nasci, fui Compilado

#478821 - 02/01/2018 15:37:26

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


Membro da equipe
Novamente, instância. Adicionando mais uma entidade em "dados", não vai fazer com que o grid seja atualizado automaticamente. Adicione a entidade à instância e atualiza a instância de DataSource do Grid.

_______________________________________________________________________
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!


#478843 - 02/01/2018 21:17:20

MOREIRA
SAO LUIS - TURU
Cadast. em:Agosto/2004


Última edição em 02/01/2018 21:34:59 por MOREIRA

Citação:
:
:
Então, ótimo! Vamos lá:
O  que você precisa entender é que um DataGrid é apenas uma representação de dados. Veja uma planilha do excel por exemplo, com dados de cliente, tipo Código, nome e data de cadastro. Quando você coloca esses dados linha à linha, você tem uma planilha normal, mas você consegue visualizar mentalmente esses mesmos dados em uma forma não linear. O que estou fazendo no exemplo que passei, é basicamente isso. Estou criando uma entidade, com algumas propriedades, adicionando instâncias desses dados em uma List<T> e passando essa List<T> como sendo os dados que devem ser exibidos no grid. Cada instância deve ser única(idealmente) para ter uma representação coerente de dados. Veja bem o que você está fazendo:

dados.Add(New Dados)
        dados.Add(New Dados)
        dados.Add(New Dados)
        dados.Add(New Dados)
        dados.Add(New Dados)



"New Dados" é uma nova instância do objeto(entidade) "Dados", que você está adicionando ao seu List<Dados> até aqui está quase lá, o que você precisa é colocar dados nesse instância. O caso é que o código convertido não está fazendo isso. Seria algo como:

dados.Add(New Dados() With { .Codigo = 1, .Nome = "Joao"  })
dados.Add(New Dados() With { .Codigo = 2, .Nome = "Maria"  })
dados.Add(New Dados() With { .Codigo = 1, .Nome = "Pedro"  })


E essa é uma das razões de eu não usar(aliás quase ninguém, em se falando de mundo corporativo) o dialeto VB.NET, ele  não é muito intuitivo e nem muito prático.


De fato preciso estudar OOP.
Bom, nesse caso já tenho dados  instanciado no objeto.
Até aí, começando a entender.
Ao tentar enviar o mesmo registro para agrid, nao é criado uma nova row.

Tendo apenas essa linha de código.

dados.Add(New Dados() With { .Codigo = 1, .Nome = "Joao"  })


Ou seja, ja tem um registro, preciso adicionar o segundo. Terceiro... Ltda......






Desculpa coloquei o código errado...dados.Add(New Dados() With { .Codigo = 1, .Nome = "Joao"  })

o código é esse..
-->>
  Dim Itens As List(Of Dados) = New List(Of Dados)

        Itens.Add(New Dados() With {.Codigo = Me.txt_CodRefBarra.Text, .Nome = "NILTON"})

        F_O1001001.DtGr.DataSource = Itens

mesmo assim está errado :??



Eu não nasci, fui Compilado

#478846 - 02/01/2018 22:46:04

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


Membro da equipe
Me parece ok, adiciona dados na List<T> e passa para o Grid. O que deveria acontecer que não está acontecendo?

_______________________________________________________________________
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!


#478847 - 02/01/2018 23:11:04

MOREIRA
SAO LUIS - TURU
Cadast. em:Agosto/2004


 Anexos estao visíveis somente para usuários registrados

A primeira linha adiciona normal, mas se tentar enviar novamente, não adiciona a segunda linha na grid

a tela em anexo



Eu não nasci, fui Compilado

#478848 - 02/01/2018 23:28:33

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


Membro da equipe
Você pode adicionar quantos quiser na List<T> antes de passar para o DataSource do grid.

_______________________________________________________________________
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!


#478850 - 03/01/2018 02:15:02

MOREIRA
SAO LUIS - TURU
Cadast. em:Agosto/2004


Citação:
:
Você pode adicionar quantos quiser na List<T> antes de passar para o DataSource do grid.


De fato se adicionar na List<T>
manualemente, assim
  Dim Itens As List(Of Dados) = New List(Of Dados)

Itens.Add(New Dados() With {.Codigo = 1, .Nome = "NILTON"})
Itens.Add(New Dados() With {.Codigo = 2, .Nome = "MARIA"})
Itens.Add(New Dados() With {.Codigo = 3, .Nome = "JOÃO"})
Itens.Add(New Dados() With {.Codigo = 4, .Nome = "PEDRO"})

F_O1001001.DtGr.DataSource = Itens


Já no Botão Adicionar, não consegue adicionar uma segundo registro na grid
só registra o primeiro registro,

se precisar adicionar na grid. só fica um registro

1, MAÇA
2, PERA
3, MELÃO
4, UVA



Eu não nasci, fui Compilado

#478851 - 03/01/2018 09:08:02

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


Membro da equipe
Acho que entendi seu dilema. Veja bem, o que você adicionou ao grid é um List<T>, na propriedade DataSource. O processo inverso é perfeitamente normal, transformar o DataSource, novamente em um List<T>, manipulá-lo e readicionar:

Dim Itens As List(Of Dados) = CType(F_O1001001.DtGr.DataSource, List(Of Dados))
Itens.Add(New Dados() With {.Codigo = 29, .Nome = "NOVO ITEM"})

F_O1001001.DtGr.DataSource = Itens




_______________________________________________________________________
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!


#478853 - 03/01/2018 09:13:58

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


Membro da equipe
Olha, tudo isso que estamos vendo aqui é bacana para aprendizado, mas o ideal seria usar BindingSource para seu grid.

_______________________________________________________________________
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!


#478876 - 03/01/2018 14:47:06

MOREIRA
SAO LUIS - TURU
Cadast. em:Agosto/2004


Última edição em 03/01/2018 15:22:22 por MOREIRA

 Anexos estao visíveis somente para usuários registrados

Citação:
:
Olha, tudo isso que estamos vendo aqui é bacana para aprendizado, mas o ideal seria usar BindingSource para seu grid.


Nossa máe, isso é mais complicado que imaginava.  Mas vamos lá !!


Eu não nasci, fui Compilado

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


Tópico encerrado, respostas não sao permitidas
Encerrado por MOREIRA em 06/01/2018 12:17:30