Preenchendo Controles Data Bound com dados de um objeto de negócio


No dia-dia das nossas atividades como desenvolvedor é comum trabalharmos com acesso a dados nas aplicações desenvolvidas, sejam elas Windows, Web, Mobile, etc. Como estas tarefas são utilizadas com uma certa freqüência, a Microsoft criou controles do tipo Data Bound onde não precisarmos ir diretamente ao código para criar funcionalidades como paginação e ordenação, exibição, edição e exclusão de registros, etc.

 

Os controles Data Bound são controles que podem ser ligados diretamente aos componentes de dados. Neste artigo, irei focar nos dois controles mais usados e como preenchê-los com dados oriundos de um objeto de negócio:

 

·         DataGrid

·         ComboBox

 

Para começar, crie um nova base de dados no SQL Server Express com o nome FornecedorProduto, e adicione as seguintes tabelas:

 

·         FOR_Fornecedor,

·         PRO_Produto,

·         FPR_Fornecedor_Produto.

 

Veja na imagem abaixo o diagrama da base de dados a ser utilizada no artigo:

pcdataboundfig01.JPG

Figura 1 – Diagrama do Banco de dados FornecedorProduto.

 

Após desenvolver o banco de dados, crie um novo website no Visual Studio.Net 2005, que aqui chamei de ObjetoDeNegocio.

 

pcdataboundfig02.JPG

Figura 2 – Novo WebSite.

 

Adicione duas novas classes chamadas de clsFornecedor e clsProduto respectivamente. Estas duas classes serão as classe de negócio do projeto. Irei codificar as classes de forma simples para exibir a funcionalidade a que esse artigo propõe. Dessa forma, em cada classe existirá apenas um método, que será o responsável por retornar um DataSet.

 

Na Classe clsFornecedor o método RetornaFornecedores será responsável por retornar o Código e o Nome do Fornecedor. Na classe clsProduto, o método RetornaProdutos recebe um parâmetro do tipo inteiro que é o código do fornecedor, e retorna todos os produtos do fornecedor passado como parâmetro.

 

Na Listagem 1 e 2, temos respectivamente a implementação do método RetornaFornecedores() da classe clsFornecedor, e RetornaProduto() da classe clsProduto.

 

    public DataSet RetornaFornecedores()

     {

         String sql;

 

        sql = " SELECT dbo.FOR_Fornecedor.FOR_Codigo, dbo.FOR_Fornecedor.FOR_Nome ";

        sql += "FROM dbo.FOR_Fornecedor ";        

 

 SqlConnection conexao = new SqlConnection("Data Source=REGILAN\\SQLEXPRESS;Initial Catalog=FornecedorProduto;Integrated Security=True");

 

        SqlCommand comando = new SqlCommand(sql, conexao);

        SqlDataAdapter adapter = new SqlDataAdapter(comando);

 

        DataSet ds = new DataSet();

 

        adapter.Fill(ds);

        return ds;

    }

Listagem 1 – Método RetornaFornecedores

 

    public DataSet RetornaProdutos(int codFornecedor)

    {

        String sql;

 

        sql = "SELECT dbo.PRO_Produto.PRO_Codigo,dbo.PRO_Produto.PRO_Descricao ";

        sql += "FROM dbo.FOR_Fornecedor INNER JOIN ";

        sql += "dbo.FPR_Fornecedor_Produto ON dbo.FOR_Fornecedor.FOR_Codigo = dbo.FPR_Fornecedor_Produto.FPR_Codigo_Fornecedor INNER JOIN ";

        sql += "dbo.PRO_Produto ON dbo.FPR_Fornecedor_Produto.FPR_Codigo_Produto = dbo.PRO_Produto.PRO_Codigo ";

        sql += "WHERE dbo.FPR_Fornecedor_Produto.FPR_Codigo_Fornecedor = ";

        sql += codFornecedor;

 

        SqlConnection conexao = new SqlConnection("Data Source=REGILAN\\SQLEXPRESS;Initial Catalog=FornecedorProduto;Integrated Security=True");

        SqlCommand comando = new SqlCommand(sql, conexao);

        SqlDataAdapter adapter = new SqlDataAdapter(comando);

 

        DataSet ds = new DataSet();

 

        adapter.Fill(ds);

        return ds;

    }

Listagem 2 – Método RetornaProdutos.

 

Com as Classes de Negócios codificadas, vamos agora inserir um controle DropDownList e um controle GridView na nossa página que deverá ficar semelhante a Figura 3.

 

pcdataboundfig03.JPG

Figura 3 – Página de Exibição dos Dados.

 

Vamos inicialmente configurar a propriedade de DataSource do DropDownList, onde temos várias possibilidades de trazer dados o controle.

 

pcdataboundfig04.JPG

Figura 4 – Escolhendo um Data Source.

 

Escolha a opção Object

 

pcdataboundfig05.JPG

Figura 5 – Definindo o Data Source o Tipo Object.

 

Na Janela a seguir, escolha o objeto de negócios, que no nosso caso será a classe clsFornecedor.

 

pcdataboundfig06.JPG

Figura 6 – Selecionando o Objeto de Negócio.

 

Clique em Next, e na janela a seguir defina os métodos de acesso a dados. No nosso exemplo vamos definir o método RetornaFornecedores().

 

pcdataboundfig07.JPG

Figura 7 – Definindo o Método de Acesso a Dados.

 

Clique em Finish e em seguida, selecione o campo para ser visualizado e o campo associado ao valor no DropDownList.

 

pcdataboundfig08.JPG

Figura 8 – Definindo as Configurações da GridView.

 

Antes de seguir para o próximo passo, configure a propriedade AutoPostBack do DropDownList para True.

 

Agora vamos definir o Data Source da GridView. Repita os passos descritos acima, com as seguintes orientações:

 

O objeto de Negócios deverá ser a classe clsProduto, e o método de acesso a dados será RetornaProdutos. Na janela de definição dos parâmetros, faça conforme a imagem abaixo, onde o Parameter Source define a fonte do parâmetro que será um controle, e o ID do Controle que será a DropDownList1.

 

pcdataboundfig09.JPG

Figura 9 – Definindo parâmetros para o método RetornaProdutos.

 

Clique em Finish e execute o projeto.

 

pcdataboundfig10.JPG

Figura 10 – Página em Exibição.

 

Selecione o Fornecedor desejado e a página será recarregada apresentando na GridView os respectivos Códigos e Descrição dos Produtos de um determinado Fornecedor.

 

Chegamos ao final do artigo. Até o próximo!