VINCULAR DATAGRIDVIEW A UM BINDINGSOURCE
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:
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.
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.
Passe o objeto diretamente:
MeuDataGridView.DataSource = pessoa.enderecos;
MeuDataGridView.DataSource = pessoa.enderecos;
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.
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.
Passe-o direto para o BingDataSource então, não tem diferença.
MeuBindingSource.DataSource = pessoa.enderecos;
MeuDataGridView.DataSource = MeuBindingSource;
Pense duas vezes antes de fazer o que esta desejando.
Seu Kerplunk, acho que vai dar um dica sempre dele.
Seu Kerplunk, acho que vai dar um dica sempre dele.
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:
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.
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.
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.
Encontrei esse exemplo aqui, veja se é isso que precisa:
docs.microsoft.com/en-us/dotnet/framework/winforms/controls/how-to-bind-data-to-the-windows-forms-datagridview-control
Aqui você tem algo mais detalhado:
www.macoratti.net/09/04/c_dtb1.htm
docs.microsoft.com/en-us/dotnet/framework/winforms/controls/how-to-bind-data-to-the-windows-forms-datagridview-control
Aqui você tem algo mais detalhado:
www.macoratti.net/09/04/c_dtb1.htm
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
O primeiro registro carrega normalmente no DataGridView, porem quando executo qualquer comando de navegação exemplo:
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 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.
Cara, fiz um exemplo aqui pra você.
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.
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.
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:
Agora vou poder dar continuidade no projeto Valeu!!!
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!!!
Tópico encerrado , respostas não são mais permitidas