COMO FAÇO PARA PREENCHER O DATAGRID EM CAMADAS?

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

COMO FAÇO PARA PREENCHER O DATAGRID EM CAMADAS?

C#

 Compartilhe  Compartilhe  Compartilhe
#489758 - 01/08/2019 17:22:56

WELISSON
CACHOEIRO DE ITAPEMIRIM
Cadast. em:Junho/2017



Fala amigos, estou precisando muito da ajuda de vocês. Eu juro que não estou com preguiça, e nem quero
que façam o trabalho por mim, mas é que to a dias nisso me salvem!

Tenho um projeto de 3 camadas, e gostaria saber como é que se faz para preencher um DatagridView. Eu já sei  fazer
com DataTable, DataRead porem meu problema é o seguinte:

Eu tenho colunas no datagrid já predefinidas, então não quero usar o DataSource. Usando o DataRead até consigo manipular isso, porem
a conexão fecha antes de apresentar os dados no grid, pois o DataRead trabalha conectado. No meu caso, eu fecho a conexão no
final da leitura e por conta disso, tenho problemas.

Estou tentando usar uma lista genérica para isso List<T>, porem não to conseguindo entender isso muito bem. É claro, se
existe alguma alternativa melhor, me falem!


Camada BLL:

public List<string> ListProdutos;

public void ListarDados()
        {
            var produtoRepository = new ProdutoDAL();
            ListProdutos = produtoRepository.ListarDados();
        }



Camada DAL:

public List<string> ListarDados()
        {
            var db = new DataBase();

            var sql = @"SELECT * From Produtos";

            return  db.ListarDados(sql);
        }



Classe conexão:

public List<string> ListarDados(string sql)
        {
            try
            {
                comando.Connection = Connection();
                comando.CommandText = sql;

                var reader = comando.ExecuteReader();

                var list = new List<string>();

                while (reader.Read())
                {
                    list.Add(reader.GetValue(0).ToString());
                }

                Close();

                return list;

            }
            catch (Exception)
            {
                throw;
            }
        }



Citação:
O caminho é por ai, acredito eu que sim rs!


Percebi que usar listas genéricas seria bacana, porque não preciso importa o oledb para todas as camadas.




Resposta escolhida #489760 - 01/08/2019 17:59:32

KERPLUNK
RIO GRANDE DO SUL
Cadast. em:Junho/2009


Membro da equipe
O seu List<T> deveria ser um List<Produto> e nos métodos da classe DAL e BLL retornar isso. Tenho vários vídeos mostrando isso no meu canal. Assista a série do C# explicadinho "basicão" e já vai ter uma idéia.

_______________________________________________________________________
Virei Oráculo!
The end is nigh, be ready for the nukes!


#489761 - 01/08/2019 18:44:45

WELISSON
CACHOEIRO DE ITAPEMIRIM
Cadast. em:Junho/2017


Citação:
:
O seu List<T> deveria ser um List<Produto> e nos métodos da classe DAL e BLL retornar isso. Tenho vários vídeos mostrando isso no meu canal. Assista a série do C# explicadinho "basicão" e já vai ter uma idéia.


Vlw mano, eu já era inscrito no canal haha!

Irei olhar sim com certeza, e retorno para dizer se conseguir!



#489770 - 02/08/2019 23:56:59

WELISSON
CACHOEIRO DE ITAPEMIRIM
Cadast. em:Junho/2017


Última edição em 03/08/2019 00:03:14 por WELISSON

Citação:
:
O seu List<T> deveria ser um List<Produto> e nos métodos da classe DAL e BLL retornar isso. Tenho vários vídeos mostrando isso no meu canal. Assista a série do C# explicadinho "basicão" e já vai ter uma idéia.


Amigão conseguir, e ainda adaptei para preencher em colunas já predefinidas. Só me fala
se esse é isso mesmo:


UI
-----------------

          
try
            {
                var produto = new ProdutoBLL();

                produto.ListarProdutos();

                for (int i = 0; i < produto.ListaDeProdutos.Count; i++)
                    DtgProdutos.Rows.Add(produto.ListaDeProdutos[i].Referencia, produto.ListaDeProdutos[i].Tamanho,
                    produto.ListaDeProdutos[i].CodigoEstampa, produto.ListaDeProdutos[i].DescricaoProduto,
                    produto.ListaDeProdutos[i].PrecoCusto, produto.ListaDeProdutos[i].PrecoVenda,
                    produto.ListaDeProdutos[i].CodigoBarras, produto.ListaDeProdutos[i].FotoProdutoID);


            }
            catch(Exception ex)
            {
                MessageBox.Show(ex.Message);
            }


CAMADA BLL
------------------------

public List<ProdutoBLL> ListaDeProdutos = new List<ProdutoBLL>();

public void ListarProdutos()
        {
            var produtoRepository = new ProdutoDAL();
            ListaDeProdutos = produtoRepository.ListarProdutos();

        }



CAMADA DAL
-----------------------

public List<ProdutoBLL> ListarProdutos()
        {

            var sql = @"SELECT Referencia,Tamanho,CodigoEstampa,DescricaoProduto,
                      PrecoCusto,PrecoVenda,CodigoBarras,FotoProdutoID From Produtos;

            var listaDeProdutos = new List<ProdutoBLL>();

            using (DataBase db = new DataBase())
            {
                db.ExecuteQuery(sql);

                while (db.reader.Read())
                {
                    ProdutoBLL produto = new ProdutoBLL
                    {
                        Referencia = (db.reader["Referencia"].ToString()),
                        Tamanho = (db.reader["Tamanho"].ToString()),
                        CodigoEstampa = (db.reader["CodigoEstampa"].ToString()),
                        DescricaoProduto = (db.reader["DescricaoProduto"].ToString()),
                        PrecoCusto = Convert.ToDouble(db.reader["PrecoCusto"]),
                        PrecoVenda = Convert.ToDouble(db.reader["PrecoVenda"]),
                        CodigoBarras = (db.reader["CodigoBarras"].ToString()),
                        FotoProdutoID = (db.reader["FotoProdutoID"].ToString())
                    };

                    listaDeProdutos.Add(produto);

                }

                return listaDeProdutos;
            }

        }

    }


Aqui deu super certo, pois agora posso criar minhas próprias colunas!





#489772 - 03/08/2019 10:39:43

CLEVERTON
SERRINHA
Cadast. em:Dezembro/2003


Membro da equipe
Não seria mais simples vc passar somente o DataSource ?

datagrid.Datasource = seuListT;



#489780 - 03/08/2019 19:43:37

KERPLUNK
RIO GRANDE DO SUL
Cadast. em:Junho/2009


Membro da equipe
Se ficou feliz com isso, imagine como vai ficar quando usar Entity Framework e OData...

_______________________________________________________________________
Virei Oráculo!
The end is nigh, be ready for the nukes!


#489787 - 04/08/2019 15:55:15

WELISSON
CACHOEIRO DE ITAPEMIRIM
Cadast. em:Junho/2017


Citação:
:
Não seria mais simples vc passar somente o DataSource ?

datagrid.Datasource = seuListT;


Dessa forma é simples, porem no meu caso não serve por isso optei dessa forma!

Mas obrigado amigo!



#489788 - 04/08/2019 15:57:39

WELISSON
CACHOEIRO DE ITAPEMIRIM
Cadast. em:Junho/2017


Citação:
:
Se ficou feliz com isso, imagine como vai ficar quando usar Entity Framework e OData...


Meu caro, tenho escultado muito sobre isso. Ainda não busquei saber o que é a fundo, eu até tentei dar uma olhada
mas parece que não funciona com access. Eu até poderia fazer meu app em outro banco como ja tenho, porem
esse é básico, mas se tiver alguns links para mim estudar manda ai!





#489796 - 05/08/2019 13:07:23

KERPLUNK
RIO GRANDE DO SUL
Cadast. em:Junho/2009


Membro da equipe
Tem muitos, muitos mesmo pra estudar. Mas a maioria vai começar com uma boa parte de teoria, o que vai facilitar muito a prática. Não é algo tão "mão na massa" como faço nos vídeos, apesar que também tenho coisas lá bem defasadas sobre OData e Entity Framework.

_______________________________________________________________________
Virei Oráculo!
The end is nigh, be ready for the nukes!


#489853 - 08/08/2019 11:40:18

WELISSON
CACHOEIRO DE ITAPEMIRIM
Cadast. em:Junho/2017


Citação:
:
Tem muitos, muitos mesmo pra estudar. Mas a maioria vai começar com uma boa parte de teoria, o que vai facilitar muito a prática. Não é algo tão "mão na massa" como faço nos vídeos, apesar que também tenho coisas lá bem defasadas sobre OData e Entity Framework.


Vou buscar saber mais, obrigado amigo!



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


Tópico encerrado, respostas não sao permitidas
Encerrado por WELISSON em 08/08/2019 11:40:29