Usuário com melhor resposta
DataGridView - Populando a partir de um List(Of Objeto)

Pergunta
-
Salve!
Aplicação sendo feita com VB2005 .
Preciso carregar um datagridview a partir de uma lista do seguinte objeto (clsEmpregadoW) e os objetos associados (clsEspecialidadeW e clsEnderecoW):
Imports System.Collections.Generic Public Class clsEmpregadoW #Region "Variáveis privadas" Private _colaboradorID As Int16 Private _nome As String Private _orgao As String Private _descSetor As String Private _especialidades As New List(Of clsEspecialidadeW) Private _enderecos As New List(Of clsEnderecoW) Private _telefones As New List(Of clsTelefoneW) #End Region #Region "Propriedades" Public Property colaboradorID() As Int16 Get Return _colaboradorID End Get Set(ByVal value As Int16) _colaboradorID = value End Set End Property Public Property nome() As String Get Return _nome End Get Set(ByVal value As String) _nome = value End Set End Property Public Property orgao() As String Get Return _orgao End Get Set(ByVal value As String) _orgao = value End Set End Property Public Property descSetor() As String Get Return _descSetor End Get Set(ByVal value As String) _descSetor = value End Set End Property Public Property especialidades() As List(Of clsEspecialidadeW) Get Return _especialidades End Get Set(ByVal value As List(Of clsEspecialidadeW)) _especialidades = value End Set End Property Public Property enderecos() As List(Of clsEnderecoW) Get Return _enderecos End Get Set(ByVal value As List(Of clsEnderecoW)) _enderecos = value End Set End Property Public Property telefones() As List(Of clsTelefoneW) Get Return _telefones End Get Set(ByVal value As List(Of clsTelefoneW)) _telefones = value End Set End Property #End Region End Class Public Class clsEspecialidadeW #Region "Variáveis privadas" Private _id As Int16 Private _especialidade As String #End Region #Region "Propriedades" Public Property Id() As Int16 Get Return _id End Get Set(ByVal value As Int16) _id = value End Set End Property Public Property Especialidade() As String Get Return _especialidade End Get Set(ByVal value As String) _especialidade = value End Set End Property #End Region End Class Imports System.Collections.Generic Public Class clsEnderecoW #Region "Variáveis privadas" Private _enderecoID As Int16 Private _colaboradorID As Int16 Private _logradouro As String Private _numero As String Private _complemento As String Private _bairro As String Private _cidade As String Private _estado As String Private _cep As String #End Region #Region "Propriedades" Public Property enderecoID() As Int16 Get Return _enderecoID End Get Set(ByVal value As Int16) _enderecoID = value End Set End Property Public Property colaboradorID() As Int16 Get Return _colaboradorID End Get Set(ByVal value As Int16) _colaboradorID = value End Set End Property Public Property logradouro() As String Get Return _logradouro End Get Set(ByVal value As String) _logradouro = value End Set End Property Public Property numero() As String Get Return _numero End Get Set(ByVal value As String) _numero = value End Set End Property Public Property complemento() As String Get Return _complemento End Get Set(ByVal value As String) _complemento = value End Set End Property Public Property bairro() As String Get Return _bairro End Get Set(ByVal value As String) _bairro = value End Set End Property Public Property cidade() As String Get Return _cidade End Get Set(ByVal value As String) _cidade = value End Set End Property Public Property estado() As String Get Return _estado End Get Set(ByVal value As String) _estado = value End Set End Property Public Property cep() As String Get Return _cep End Get Set(ByVal value As String) _cep = value End Set End Property #End Region End Class
Como visto na classe clsEmpregadoW, algumas das propriedades são listas de outros objetos (enderecos - List(Of clsEnderecoW) e especialidades - List(Of clsEspecialidadeW) ).
No datagridview preciso mostrar todas as especialidades de um empregado assim como cidades/bairros (que são propriedades da classe clsEnderecoW). Pensei em mostrar essas informações em colunas do tipo combobox.
Só que não estou sabendo como carregar a minha lista e, principalmente, as informações das propriedades que têm mais de um valor (especialidades e cidades/bairros). Andei procurando no help, nos vários "how to ...", internet e ainda não encontrei nada que pudesse me ajudar.
Conto com os feras desse fórum para uma ajuda.
Grato pela atenção de todos.
Paulo Ricardo Ferreira
Respostas
-
Paulo,
Para isto você deve usar um BindingSource, você irá criar um Object Data Source e apontar para o seu objeto "pai", e então você adiciona outros bindingsources que irá apontar para este BindingSource, a partir dai você poderá selecionar a sua lista no DataMember do BindingSource.
Então você irá ligar os seus DataGridViews direto nos BindingSources.
Veja também um exemplo:
http://www.code-magazine.com/article.aspx?quickid=0603011&page=4
at.,
Rogério de Resende Ohashi | Ohashi.NET (.NET, Security, C#, WinForms, WCF, Workflow, Azure, Windows Phone, Mono)- Sugerido como Resposta Marcus Paulo Couto terça-feira, 30 de novembro de 2010 17:45
- Marcado como Resposta AndreAlvesLimaModerator quinta-feira, 6 de janeiro de 2011 11:51
-
PRicardo,
Você pode usar da mesma forma que te falei, só que ao invés de usar 2 grids, você irá ligar o bindingsource do seu detalhe, ao DataSource da sua coluna do grid, não esqueça também de informar o DisplayMember e o ValueMember.
at.,
Rogério de Resende Ohashi | Ohashi.NET (.NET, Security, C#, WinForms, WCF, Workflow, Azure, Windows Phone, Mono)- Marcado como Resposta AndreAlvesLimaModerator quinta-feira, 6 de janeiro de 2011 11:51
Todas as Respostas
-
Paulo,
Para isto você deve usar um BindingSource, você irá criar um Object Data Source e apontar para o seu objeto "pai", e então você adiciona outros bindingsources que irá apontar para este BindingSource, a partir dai você poderá selecionar a sua lista no DataMember do BindingSource.
Então você irá ligar os seus DataGridViews direto nos BindingSources.
Veja também um exemplo:
http://www.code-magazine.com/article.aspx?quickid=0603011&page=4
at.,
Rogério de Resende Ohashi | Ohashi.NET (.NET, Security, C#, WinForms, WCF, Workflow, Azure, Windows Phone, Mono)- Sugerido como Resposta Marcus Paulo Couto terça-feira, 30 de novembro de 2010 17:45
- Marcado como Resposta AndreAlvesLimaModerator quinta-feira, 6 de janeiro de 2011 11:51
-
Caro Rogério,
Não tem "os " DataGridViews. É um único DataGridView. E neste único DataGridView eu gostaria de mostrar, em colunas tipo combobox, os valores das propriedades da classe clsEmpregadoW que são listas de outras classes.
De qualquer forma, Rogério, vou dar uma olhada no artigo do link que você indicou.
Grato pela sua atenção.
Paulo Ricardo Ferreira
-
PRicardo,
Você pode usar da mesma forma que te falei, só que ao invés de usar 2 grids, você irá ligar o bindingsource do seu detalhe, ao DataSource da sua coluna do grid, não esqueça também de informar o DisplayMember e o ValueMember.
at.,
Rogério de Resende Ohashi | Ohashi.NET (.NET, Security, C#, WinForms, WCF, Workflow, Azure, Windows Phone, Mono)- Marcado como Resposta AndreAlvesLimaModerator quinta-feira, 6 de janeiro de 2011 11:51