NUNCA MAIS PASSE RAIVA POR NÃO CONSEGUIR RESOLVER UM PROBLEMA COM O EXCEL - GARANTIDO!

UNIVERSIDADE DO VBA - Domine o VBA no Excel Criando Sistemas Completos - Passo a Passo - CLIQUE AQUI

Você está em: PrincipalArtigosNet : Listadados002
Quer receber novidades e e-books gratuitos?

Lista de Dados com Subitens – Parte II

Olá pessoal,

Dando continuidade ao nosso tutorial, peço que abra o arquivo ListaDeProdutos.aspx. Clique no botão ViewCode.

Iremos criar primeiramente o código que monta a lista de categorias. Como usaremos o banco de dados Northwind do SQL Server, devemos importar o Namespace System.Data.SqlClient e também o namespace System.Data, pois, utilizaremos o objeto DataTable.

Imports System.Data.SqlClient

Imports System.Data

Vamos criar a conexão com o banco de dados, que será com o escopo público, uma vez que utilizaremos esta mesma conexão para mais de uma consulta ao banco de dados.

Public sqlConn As New SqlConnection("Initial Catalog=Northwind;Data Source=Servidor;user id=SeuLogin;pwd=SuaSenha")

Não esqueça de fazer as devidas configurações nas string de conexão.

Agora digite o código abaixo, que conecta ao banco de dados e monta a lista de categorias.

Private Sub MontaCategorias()

        'Cria o adaptador de dados, selecionando os dados da tabela categorias

        Dim sqlAdp As New SqlDataAdapter("Select CategoryID,CategoryName from Categories", sqlConn)

        'Cria a tabela virtual de dados

        Dim dt As New DataTable

        'Preencha a tabela com os dados da consulta

        sqlAdp.Fill(dt)

        'Anexa a chave-primária da consulta ao DataList

        dlCategorias.DataKeyField = "CategoryId"

        'Indica a fonte de dados

        dlCategorias.DataSource = dt

        'Renderiza o controle

        dlCategorias.DataBind()

    End Sub

Chame este método no Page_Load:

Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

        If Not Page.IsPostBack Then

            MontaCategorias()

        End If

    End Sub

Façamos um teste, rode a aplicação:

Isto quer dizer que o código funcionou.

Agora, vamos listar os subitens, que são os produtos de cada categoria.

Usaremos o evento ItemCreated do DataList dlCategorias para gerar os subitens, isto, porque será gerado durante o momento da criação do DataList. Digite o código conforme abaixo:

    Private Sub dlCategorias_ItemCreated(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.DataListItemEventArgs) Handles dlCategorias.ItemCreated

        Dim x As Integer

        'Interage com todos os itens do datalist para poder percorrer a cada índice da chave-primária

        For x = 0 To dlCategorias.Items.Count

            Dim sqlAdp As New SqlDataAdapter("Select ProductName from Products where CategoryID=" & dlCategorias.DataKeys(x) & "", sqlConn)

            'Cria a tabela virtual de dados

            Dim dt As New DataTable

            'Preencha a tabela com os dados da consulta

            sqlAdp.Fill(dt)

            'Cria a instância do objeto DataGrid

            Dim dgItems As DataGrid

            'Indica que o Datagrid criado acima será o que está dentro do dlCategorias

            dgItems = e.Item.FindControl("dgItems")

            'Indica a fonte de dados

            dgItems.DataSource = dt

            'Renderiza o Datagrid

            dgItems.DataBind()

        Next

    End Sub

Uma breve explicação sobre o código acima:

Utilizamos a instrução de repetição For, para interagir com os itens do DataList. Uma vez que este itens não estão selecionados, deve se utilizar esta forma para poder percorrer todas os índices de chave-primária. Vejam que mais a frente utilizei a variável x como índice de chave-primária a cada vez que a consulta era executada:

Dim sqlAdp As New SqlDataAdapter("Select ProductName from Products where CategoryID=" & dlCategorias.DataKeys(x) & "", sqlConn)

Mais abaixo, foi necessário criar uma instância do objeto DataGrid para armazenar o DataGrid que está dentro do DataList.

            Dim dgItems As DataGrid

            'Indica que o Datagrid criado acima será o que está dentro do dlCategorias

            dgItems = e.Item.FindControl("dgItems")

Isto foi necessário porque não é possível obter as propriedades e métodos deste DataGrid diretamente, pois, está vinculado a outro controle. Para vincular este DataGrid a novo DataGrid criado, utilizamos o método FindControl, que deve-se passar o nome do controle a ser localizado.

Creio que estas explicações deram uma clareada em vossas mentes, não?

Vamos testar a aplicação:

Vejam que ficou ótimo, mas pode ficar um pouquinho melhor se adicionarmos rolagem a esta lista.

Vá a ToolBox e adicione um Panel, e faça os ajustes de tamanho como desejar.

Apague seu conteúdo, e vá até a guia HTML.

Localize o código-fonte que gera o Panel1.

Adicione o seguinte trecho ao atributo Style:

OVERFLOW=auto

Veja a linha completa do código HTML:

<asp:Panel id="Panel1" style="OVERFLOW=auto;Z-INDEX: 102; LEFT: 344px; POSITION: absolute; TOP: 32px" runat="server"    Width="288px" Height="320px">Panel</asp:Panel>

Ok, agora volte a guia Design e arraste o DataList para dentro do Panel.

Faça os devidos ajustes e execute a aplicação.

Agora sim, perfeito. Vejam que com pouco código conseguimos uma solução impressionante.

Espero que tenham gostado, e dúvidas ou sugestões mandem para lanodecastro@hotmail.com

Estou aguardando, muitos abraços, e parabéns para mim que completei mais um ano de vida no dia 17 de setembro

Lano de Castro

1 Visão geral do .NET Framework e do CLR
1 Comunicação .NET e VB 6.0 (com Visual Studio.NET 2005) - Parte I
1 Desenvolvendo aplicações Windows utilizando o VB.NET e o C# - Parte 1
1 Desenvolvendo aplicações Windows utilizando o VB.NET e o C# - Parte 2
1 Desenvolvendo aplicações Windows utilizando o VB.NET e o C# - Parte 3
1 Desenvolvendo aplicações Windows utilizando o VB.NET e o C# - Parte 4
1 Desenvolvendo aplicações Windows utilizando o VB.NET e o C# - Parte 5
1 VB: Menu Principal, Menu PopUp e Arquivos Texto
Visual Studio
1 ASP.NET 2.0 - Conhecendo o ObjectDataSource Control
1 Visual Web Developer - 2005 - Beta 2 - Introdução
1 ASP.NET 2.0 - Conhecendo o GridView
1 ASP.NET 2.0 - Utilizando o GridView e DetailsView
1 ASP.NET 2.0 - Conhecendo o ObjectDataSource Control - Parte 2
1 ASP.NET 2.0 - Utilizando o XmlDataSource
1 Envio de e-mail através de formulário web
1 ADO.NET 2.0 - Conhecendo as novidades parte 1
1 Série Visual Source Safe - Parte 1
1 Série Visual Source Safe - Parte 3
1 URL Indexável – Reescrever URL de uma forma amigável
1 Permissão de Página Utilizando Web.Config
1 Usando public interface
1 Trabalhando com o componente TabContainer
1 Adicionando Menu no DataGridView
ASP.NET
1 Conhecendo o ambiente integrado do WebMatrix
1 Desenvolvendo aplicações ASP.NET no WebMatrix - WebControls – Parte I
1 Desenvolvendo aplicações ASP.NET no WebMatrix - WebControls – Parte II
1 Desenvolvendo aplicações ASP.NET no WebMatrix - WebControls – Parte III
1 Acessando um banco de dados facilmente com ADO.Net e Datagrid
1 Desvendando os segredos do Dataset- Parte I
1 Construindo um Sistema de Publicação de Notícias – Parte 1
1 Construindo um Sistema de Publicação de Notícias – Parte 2
1 Construindo um Sistema de Publicação de Notícias – Parte 3
1 Construindo um Sistema de Publicação de Notícias – Parte 4
1 Construindo um Sistema de Publicação de Notícias – Parte 5
1 Login com Perfil de Acesso
1 Guest Book com XML - Parte 1
1 Guest Book com XML - Parte 2
1 Agendando Datas no Calendário com XML
1 Filtrando e Organizando Dados com o Controle DataView
1 Lista de Dados com Subitens – Parte 1
1 Lista de Dados com Subitens – Parte 2
1 Trabalhando com Arquivos e Diretórios – Parte 1
1 Trabalhando com Arquivos e Diretórios – Parte 2
1 Trabalhando com Arquivos e Diretórios – Parte 3
1 Sistema de Enquetes baseado em WebServices – Parte 1
1 Sistema de Enquetes baseado em WebServices – Parte 2
1 Sistema de Enquetes baseado em WebServices – Parte 3
1 Upload de Arquivos
1 Crie seu próprio código de verificação
1 Login e Senha com FormsAuthentication – Parte 1
1 Login e Senha com FormsAuthentication – Parte 2
1 Sistema de Enquetes baseado em WebServices – Parte 4
1 Sistema de Enquetes baseado em WebServices – Parte 5
1 Sistema de Enquetes baseado em WebServices – Parte 6