VINCULAR DATAGRIDVIEW A UM BINDINGSOURCE

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

VINCULAR DATAGRIDVIEW A UM BINDINGSOURCE

C#

 Compartilhe  Compartilhe  Compartilhe
#477282 - 20/10/2017 16:50:28

MRSILVA
MARINGA
Cadast. em:Julho/2015


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.



Resposta escolhida #477283 - 20/10/2017 16:59:29

JABA
CABO FRIO
Cadast. em:Agosto/2005


Passe o objeto diretamente:

MeuDataGridView.DataSource = pessoa.enderecos;

_______________________________________________________________________________________________

Se a alma ou espírito são imateriais, como eles fazem para se localizarem quando o corpo está em movimento?



#477284 - 20/10/2017 17:33:34

MRSILVA
MARINGA
Cadast. em:Julho/2015


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.




#477285 - 20/10/2017 17:39:46

JABA
CABO FRIO
Cadast. em:Agosto/2005


Passe-o direto para o BingDataSource então, não tem diferença.

MeuBindingSource.DataSource = pessoa.enderecos;
MeuDataGridView.DataSource = MeuBindingSource;


_______________________________________________________________________________________________

Se a alma ou espírito são imateriais, como eles fazem para se localizarem quando o corpo está em movimento?



#477286 - 20/10/2017 17:40:52

OMAR2011
MONTES CLAROS
Cadast. em:Setembro/2011


Pense duas vezes antes de fazer o que esta desejando.
Seu Kerplunk, acho que vai dar um dica sempre dele.



#477287 - 20/10/2017 18:00:47

MRSILVA
MARINGA
Cadast. em:Julho/2015


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.




#477288 - 20/10/2017 18:24:32

JABA
CABO FRIO
Cadast. em:Agosto/2005


Última edição em 20/10/2017 18:30:20 por JABA

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


_______________________________________________________________________________________________

Se a alma ou espírito são imateriais, como eles fazem para se localizarem quando o corpo está em movimento?



#477291 - 21/10/2017 12:41:45

MRSILVA
MARINGA
Cadast. em:Julho/2015


Última edição em 21/10/2017 12:45:31 por MRSILVA

 Anexos estao visíveis somente para usuários registrados

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.






#477295 - 21/10/2017 15:15:05

JABA
CABO FRIO
Cadast. em:Agosto/2005


 Anexos estao visíveis somente para usuários registrados

Cara, fiz um exemplo aqui pra você.



_______________________________________________________________________________________________

Se a alma ou espírito são imateriais, como eles fazem para se localizarem quando o corpo está em movimento?



#477296 - 21/10/2017 15:29:10

MRSILVA
MARINGA
Cadast. em:Julho/2015


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.



#477297 - 21/10/2017 15:50:16

MRSILVA
MARINGA
Cadast. em:Julho/2015


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



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


Tópico encerrado, respostas não sao permitidas
Encerrado por MRSILVA em 21/10/2017 17:08:35