Usuário com melhor resposta
Preencher gridview com valores de duas tabelas

Pergunta
-
Como faço para preencher um gridView com valores de 2 tabelas?
Tenho uma tabela "Usuario" que tem o 'Nome' e o 'Id_Professor' e outra tabela "Professor".
Preciso mostrar no grid os valores da tabela "Professor" e mais o 'Nome' que se encontra na tabela "Usuario".
Desde já agradeço a todos!!
Respostas
-
Eiras, o GridView como outros controles so aceitam trabalhar com datasource de uma unica fonte, então é necessario que você reuna isto em um único local, seja ele em um DataTable ou um List unica,
você pode fazer assim,se você não desejar passar este resultado entre métodos:
List<Professor> professores = new List<Professor>() { new Professor{Id = 1, Nome="Professor 1"}, new Professor{Id = 2, Nome= "Professor 2"}, new Professor{Id = 3, Nome= "Professor 3"}, new Professor{Id = 4, Nome= "Professor 4"}, new Professor{Id = 5, Nome= "Professor 5"} }; List<Usuario> usuarios = new List<Usuario>() { new Usuario{Id = 1, Id_Professor = 1,Nome="Olavo Oliveira Neto"}, new Usuario{Id = 2, Id_Professor = 2,Nome="John Doe"}, new Usuario{Id = 3, Id_Professor = 3,Nome="Chico Bento"} }; var query = (from usu in usuarios join prof in professores on usu.Id_Professor equals prof.Id select new { UsuarioId = usu.Id, Usuario = usu.Nome, ProfessorId = prof.Id, Professor = prof.Nome }).ToList();
ou então, caso deseje crira um método so para isto você deve criar uma classe quer represente a união dessas duas classes, por exemplo a classe:
public class UsuarioProfessor { public int Id { get; set; } public string Nome { get; set; } public int Id_Professor { get; set; } public string Professor { get; set; } }
para preencher com a seguinte consulta:
e então passar para o gridview através da propriedade DataSourcevar query = (from usu in usuarios join prof in professores on usu.Id_Professor equals prof.Id select new UsuarioProfessor { Id = usu.Id, Nome = usu.Nome, Id_Professor = prof.Id, Professor = prof.Nome }).ToList();
Olavo Oliveira Neto
http://olavooneto.wordpress.com
Se for útil marque como resposta e faça um Developer feliz :)- Sugerido como Resposta AndreAlvesLimaModerator segunda-feira, 18 de abril de 2011 22:24
- Marcado como Resposta Eiras terça-feira, 19 de abril de 2011 18:51
Todas as Respostas
-
Eiras, o GridView como outros controles so aceitam trabalhar com datasource de uma unica fonte, então é necessario que você reuna isto em um único local, seja ele em um DataTable ou um List unica,
você pode fazer assim,se você não desejar passar este resultado entre métodos:
List<Professor> professores = new List<Professor>() { new Professor{Id = 1, Nome="Professor 1"}, new Professor{Id = 2, Nome= "Professor 2"}, new Professor{Id = 3, Nome= "Professor 3"}, new Professor{Id = 4, Nome= "Professor 4"}, new Professor{Id = 5, Nome= "Professor 5"} }; List<Usuario> usuarios = new List<Usuario>() { new Usuario{Id = 1, Id_Professor = 1,Nome="Olavo Oliveira Neto"}, new Usuario{Id = 2, Id_Professor = 2,Nome="John Doe"}, new Usuario{Id = 3, Id_Professor = 3,Nome="Chico Bento"} }; var query = (from usu in usuarios join prof in professores on usu.Id_Professor equals prof.Id select new { UsuarioId = usu.Id, Usuario = usu.Nome, ProfessorId = prof.Id, Professor = prof.Nome }).ToList();
ou então, caso deseje crira um método so para isto você deve criar uma classe quer represente a união dessas duas classes, por exemplo a classe:
public class UsuarioProfessor { public int Id { get; set; } public string Nome { get; set; } public int Id_Professor { get; set; } public string Professor { get; set; } }
para preencher com a seguinte consulta:
e então passar para o gridview através da propriedade DataSourcevar query = (from usu in usuarios join prof in professores on usu.Id_Professor equals prof.Id select new UsuarioProfessor { Id = usu.Id, Nome = usu.Nome, Id_Professor = prof.Id, Professor = prof.Nome }).ToList();
Olavo Oliveira Neto
http://olavooneto.wordpress.com
Se for útil marque como resposta e faça um Developer feliz :)- Sugerido como Resposta AndreAlvesLimaModerator segunda-feira, 18 de abril de 2011 22:24
- Marcado como Resposta Eiras terça-feira, 19 de abril de 2011 18:51
-
Fiz assim:
var resultado = from usu in contexto.Usuario join prof in contexto.Professor on usu.IdProfessor equals prof.Id select new { usu.Nome, prof.Descricao }; return resultado;
mas não sei qual valor de retorno do método utilizar. Seria uma lista de professor,mas da erro.
-
Olá,
Não é possível retornar um tipo anônimo diretamente... Você precisaria criar uma classe que representa o tipo de retorno desejado (uma classe com Nome e Descricao somente)... Para maiores detalhes, dê uma olhada neste link:
http://stackoverflow.com/questions/534690/linq-to-sql-return-anonymous-type
André Alves de Lima
Microsoft MVP - Client App Dev
Visite o meu site: http://www.andrealveslima.com.br
Me siga no Twitter: @andrealveslima -
Eiras, é como eu disse lá em cima, se você vai criar um método so pra sua consulta, você precisa criar uma classe que represente está consulta, conforme o segundo exemplo que eu coloquei de código.
Olavo Oliveira Neto
http://olavooneto.wordpress.com
Se for útil marque como resposta e faça um Developer feliz :) -