VINCULAR DATAGRIDVIEW A UM BINDINGSOURCE

MRSILVA 20/10/2017 16:50:28
#477282
Olá preciso de uma ajuda.
Tenho um bindingSource que recebe uma list que contem algumas tabelas vinculadas , estou com dificuldade de ligar um datagridview em uma dessas tabelas que está dentro da lista.
Nessa lista tem os dados vinculados da minha classe pessoa, fornecedor e uma coleção de endereços, precisava vincular ao datagridview somente as informações de endereços o restante dos outros dados estou ligando em outros controles do formulário sem problemas.

Estou fazendo da seguinte forma:

 MeuDataGridView.DataSource = dados;
MeuDataGridView.DataMember = [Ô]pessoa.enderecos[Ô];


Verifiquei na minha list e os dados do enderecos são carregados mas no DataGridView não aparece as informações, mas também não da erro.

Desde já agradeço.
JABA 20/10/2017 16:59:29
#477283
Resposta escolhida
Passe o objeto diretamente:

MeuDataGridView.DataSource = pessoa.enderecos;
MRSILVA 20/10/2017 17:33:34
#477284
Mais uma vez obrigado pela ajuda.

Mais queria navegar pelos registros por isso estou utilizando um bindingSource, se passar o objeto diretamente não tem como eu navegar pelos registros.

O formulário que tem o DataGridView tem controles que recebe informações de três objetos vinculados que são pessoa, fornecedor e enderecos, somente o enderecos quero colocar em um DataGridView, ou seja, quando eu navegar pelos registros queria que o DataGridView atualizasse automaticamente.
Consigo fazer isso em lista de com um único objeto.

Desde já agradeço.
JABA 20/10/2017 17:39:46
#477285
Passe-o direto para o BingDataSource então, não tem diferença.

MeuBindingSource.DataSource = pessoa.enderecos;
MeuDataGridView.DataSource = MeuBindingSource;
OMAR2011 20/10/2017 17:40:52
#477286
Pense duas vezes antes de fazer o que esta desejando.
Seu Kerplunk, acho que vai dar um dica sempre dele.
MRSILVA 20/10/2017 18:00:47
#477287
Jaba não estou conseguindo entender.

Se eu passar o BindingSource diretamente para o DataGridView o data grid vai mostra um monte de dados que não é endereços.

Vou mostrar um pouco mais do código para ver se estou fazendo corretamente.

Aqui e carrego minha lista e carrego meu BindingSource:

 listaPessoaFornecedorEnd = new List<Fornecedor>();

listaPessoaFornecedorEnd = fornecedorApp.GetListaFornecedor();

dados.DataSource = listaPessoaFornecedorEnd;
vinculaControles();

Eu verifiquei a lista as informações estão sendo carregadas.

Aqui eu faço a vinculação dos controles do meu formulário com o BindingSource, todos estão funcionando corretamente exceto o DataGridView.

  private void vinculaControles()
{
txtId.DataBindings.Add([Ô]Text[Ô], dados, [Ô]Id[Ô], true);
cbxTipo.DataBindings.Add([Ô]ValueMember[Ô], dados, [Ô]pessoa.tipoPessoa[Ô], true);
txtInscricaoFed.DataBindings.Add([Ô]Text[Ô], dados, [Ô]inscricaoFed[Ô], true);
txtInscricaoEst.DataBindings.Add([Ô]Text[Ô], dados, [Ô]inscricaoEst[Ô], true);
txtInscricaoMun.DataBindings.Add([Ô]Text[Ô], dados, [Ô]inscricaoMun[Ô], true);
txtNome.DataBindings.Add([Ô]Text[Ô], dados, [Ô]pessoa.nome[Ô], true);
txtNomeFantasia.DataBindings.Add([Ô]Text[Ô], dados, [Ô]pessoa.nomeFantasia[Ô], true);


dataGridView1.DataMember = [Ô]pessoa.enderecos[Ô];
dataGridView1.DataSource = dados;

}

Será que é possível fazer dessa forma através do BindingSource ou tenho que fazer via código a atualização do dataGridView?
Desde já agradeço.
JABA 20/10/2017 18:24:32
#477288
MRSILVA 21/10/2017 12:41:45
#477291
Olá.

Jaba obrigado verifiquei os exemplos só que eles trabalham com dataset e estou trabalhando com entity framework que trabalha mais facil com listas, por isso vou insistir dessa forma.

Consegui carregar a minha lista fiz uma modificação na minha consulta que buscava os dados e informei as seguintes propriedades do DataGridWiew

 
MeuDataGridView.DataMember = [Ô]enderecos[Ô];
MeuDataGridView.DataSource = dados;


O primeiro registro carrega normalmente no DataGridView, porem quando executo qualquer comando de navegação exemplo:
 dados.MoveNext();  


O Acontece um erro conforme acima, que não consigo corrigir, fiz diversas pesquisas desde ontem já tentei de diversas formas mas não consigo resolver, nem mesmo consigo saber da onde vem esse erro. Se eu carregar o DataGridWiew sem o [Ô]DataMember[Ô] carrega normalmente e posso navegar pelos registro Pai, só que não são esses dados que queria e sim da tabela endereço que está vinculado a tabela pessoa (Pai).

Alguém pode me ajudar nisso?
Desde já agradeço.


JABA 21/10/2017 15:15:05
#477295
Cara, fiz um exemplo aqui pra você.

MRSILVA 21/10/2017 15:29:10
#477296
Jaba.
Eu não vi seu exemplo ainda mais nesse momento acabei de localizar porque dava erro.

Na minha classe pessoa que é a classe pai tinha a propriedade de navegação com tipo ICollection mudei para IList que é da mesmo tipo de coleção que uso no meu BindingSorce, não da mais erro.

De tando pesquisar aprendi muito esses dias...

Muito obrigado pela sua atenção. vou estudar seu exemplo também.
MRSILVA 21/10/2017 15:50:16
#477297
Jaba.

Da forma que você criou seu exemplo o endereço é adicionado a pessoa já como uma lista e também a propriedade endereco da classe pessoa você ja criou como lista, o meu antes a propriedade endereço estava com ICollection por isso gerava o erro. A maioria dos exemplos da internet utilizam ICollection, eu achava que quando chamava as informações do banco de dados através do EF a propriedade endereço já vinha como lista já que eu utilizava ToList no final da consulta, veja como eu chamo as informações:

 return Db.Pessoa.Include(c=> c.enderecos).ToList();  


Agora vou poder dar continuidade no projeto Valeu!!!
Página 1 de 2 [12 registro(s)]
Tópico encerrado , respostas não são mais permitidas