COMO: Exibir dados hierárquicos usando controles Repeater aninhados e Visual Basic .NET

IMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine Translation ou MT), não tendo sido portanto traduzido ou revisto por pessoas. A Microsoft possui artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais, com o objetivo de oferecer em português a totalidade dos artigos existentes na base de dados de suporte. No entanto, a tradução automática não é sempre perfeita, podendo conter erros de vocabulário, sintaxe ou gramática. A Microsoft não é responsável por incoerências, erros ou prejuízos ocorridos em decorrência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza atualizações freqüentes ao software de tradução automática (MT). Obrigado.

Clique aqui para ver a versão em Inglês deste artigo: 326338

Para obter uma Microsoft Visual translation from VPE for Csharp .NET versão deste artigo, consulte 306154.

Este artigo se refere aos seguintes namespaces Microsoft .NET Framework Class Library:
  • System.Data
  • System.Data.SqlClient

NESTA TAREFA

Sumário
Este artigo descreve como usar controles aninhados de Web Repeater para exibir dados hierárquicos. Você pode aplicar esse conceito para outros controles ligados a lista.

back to the top

Vincular a tabela pai

  1. Inicie o Microsoft Visual Studio NET..
  2. No menu arquivo , aponte para novo e, em seguida, clique em Project .
  3. Clique em Projetos do Visual Basic em Tipos de projeto e, em seguida, clique em ASP.NET Web Application em modelos .
  4. Na caixa local , exclua WebApplication # e digite
    NestedRepeater
    . Se você usar o servidor local, você pode deixar o nome do servidor como http://localhost . O caminho aparece na caixa local da seguinte maneira: http://localhost/ NestedRepeater
  5. No Solution Explorer, clique com o botão direito no nome do projeto nó ( NestedRepeater ), clique em Adicionar e, em seguida, clique em Add Web Form .
  6. Na caixa nome , digite NestedRepeater e clique em Abrir .
  7. O novo formulário da Web é criado. Ele abre no modo Design no IDE do Microsoft Visual Studio. NET. Da caixa de ferramentas, selecione o controle Repeater e arraste-o para a página Web Form.
  8. Altere a propriedade ID do controle Repeater para parentRepeater .
  9. Alterne para o modo de exibição HTML desse formulário da Web. Para fazer isso, clique na guia HTML no canto inferior esquerdo do Designer. O HTML que o controle Repeater gera é da seguinte maneira:
    <asp:Repeater id="parentRepeater" runat="server"></asp:Repeater>					
  10. Adicione o seguinte código nas marcas Repeater :
    <itemtemplate>     <b><%# DataBinder.Eval(Container.DataItem, "au_id") %></b><br></itemtemplate>					
    após você adicionar o código, o código HTML para Repeater é da seguinte maneira:
    <asp:Repeater id="parentRepeater" runat="server">	<itemtemplate>	     <b><%# DataBinder.Eval(Container.DataItem, "au_id") %></b><br>		        </itemtemplate></asp:Repeater>					
  11. No Solution Explorer, clique com o botão direito do mouse NestedRepeater.aspx e, em seguida, clique em View Code para alternar para a página code-behind (NestedRepeater.aspx.vb).
  12. Adicione a declaração de namespace a seguir na parte superior do arquivo:
    Imports System.DataImports System.Data.SqlClient					
  13. Adicione o seguinte código ao evento Page_Load para criar uma conexão com o banco de dados pubs e vincular a tabela de autores a controle Repeater :
    Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load    Dim cnn As SqlConnection = New SqlConnection("server=(local);database=pubs;Integrated Security=SSPI")    Dim cmd1 As SqlDataAdapter = New SqlDataAdapter("select * from authors", cnn)    Dim ds As DataSet = New DataSet()    cmd1.Fill(ds, "authors")    'Insert code in step 4 of the next section here.    parentRepeater.DataSource = ds.Tables("authors")    Page.DataBind()    cnn.Close()End Sub					
    Observação : talvez seja necessário modificar a string de conexão de banco de dados conforme apropriado para seu ambiente.

  14. Salve todos os arquivos.
  15. No menu Build , clique em Build Solution para compilar o projeto.
  16. Exibir a página .aspx no navegador e, em seguida, verifique se a página funciona até. A saída deve aparecer da seguinte maneira:
    172-32-1176
    213-46-8915
    238-95-7766
    267-41-2394
    ...
back to the top

Vincular a tabela filho

  1. No modo de exibição HTML da página NestedRepeater.aspx, localize o código a seguir:
    <b><%# DataBinder.Eval(Container.DataItem, "au_id") %></b><br>.<BR/>						
    após essa linha de código, adicione o seguinte código para adicionar um segundo controle Repeater para o ItemTemplate do controle Repeater pai:
    <asp:repeater id="childRepeater" runat="server">		<itemtemplate>	            <%# Container.DataItem("title_id") %>		    <br>		</itemtemplate></asp:repeater>					
  2. Definida a propriedade DataSource para o filho controle Repeater da seguinte maneira:
    <asp:repeater ... datasource='<%# Container.DataItem.Row.GetChildRows("myrelation") %>'>					
    depois de definir a propriedade DataSource para o filho controle Repeater , o código HTML para os dois controles Repeater (pai e filho) aparece da seguinte maneira:
    <asp:Repeater id="parentRepeater" runat="server">	<itemtemplate>		<b>		 <%# DataBinder.Eval(Container.DataItem, "au_id") %>		</b>		<br>		<asp:repeater id="childRepeater" runat="server"                     datasource='<%#                    Container.DataItem.Row.GetChildRows("myrelation")%>'>			<itemtemplate>				<%# Container.DataItem("title_id") %><br>				</itemtemplate>		</asp:Repeater> 	</itemtemplate></asp:Repeater>					
  3. Adicione a seguinte diretiva de página na parte superior da página:
    <%@ Import Namespace="System.Data" %>					
  4. Na página code-behind, substitua a seguinte linha no evento Page_Load
    'Insert code in step 4 of the next section here.						
    com o código a seguir, que adiciona a tabela de títulos para o DataSet e, em seguida, adiciona as relações entre as tabelas títulos e autores :
    Dim cmd2 As SqlDataAdapter = New SqlDataAdapter("select * from titleauthor", cnn)cmd2.Fill(ds, "titles")ds.Relations.Add("myrelation", _ds.Tables("authors").Columns("au_id"), _ds.Tables("titles").Columns("au_id"))parentRepeater.DataSource = ds.Tables("authors")					
  5. Salve todos os arquivos e, em seguida, criar o projeto.
  6. Visualize a página no navegador e, em seguida, verifique se a página funciona até o momento. A saída deve aparecer da seguinte maneira:
    172-32-1176
    PS3333
    213-46-8915
    BU1032
    BU2075
    238-95-7766
    PC1035
    267-41-2394
    BU1111
    TC7777
    ...
back to the top

Concluir lista de código

Nestedrepeater.aspx

<%@ Import Namespace="System.Data" %><%@ Page Language="vb" AutoEventWireup="false" Codebehind="NestedRepeater.aspx.vb" Inherits="yourprojectnamespace.NestedRepeater"%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><HTML>	<HEAD>		<title>NestedRepeater</title>		<meta name="GENERATOR" content="Microsoft Visual Studio.NET 7.0">		<meta name="CODE_LANGUAGE" content="Visual Basic 7.0">		<meta name="vs_defaultClientScript" content="JavaScript">		<meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5">	</HEAD>	<body MS_POSITIONING="GridLayout">		<form id="Form1" method="post" runat="server">			<asp:Repeater id="parentRepeater" runat="server">				<itemtemplate>					<b>						<%# DataBinder.Eval(Container.DataItem, "au_id") %>					</b>					<br>					<asp:repeater id="childRepeater"                                          runat="server" datasource='<%# Container.DataItem.Row.GetChildRows("myrelation") %>'>						<itemtemplate>							<%# Container.DataItem("title_id") %><br>							</itemtemplate>					</asp:Repeater> 				</itemtemplate>			</asp:Repeater>		</form>	</body></HTML>				

Nestedrepeater.aspx.vb

Imports System.DataImports System.Data.SqlClientPublic Class NestedRepeater    Inherits System.Web.UI.Page    Protected WithEvents childRepeater As System.Web.UI.WebControls.Repeater    Protected WithEvents parentRepeater As System.Web.UI.WebControls.Repeater#Region " Web Form Designer Generated Code "    'This call is required by the Web Form Designer.    <System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent()    End Sub    Private Sub Page_Init(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Init        'CODEGEN: This method call is required by the Web Form Designer        'Do not modify it using the code editor.        InitializeComponent()    End Sub#End Region    Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load        Dim cnn As SqlConnection = New SqlConnection("server=(local);database=pubs;Integrated Security=SSPI")        Dim cmd1 As SqlDataAdapter = New SqlDataAdapter("select * from authors", cnn)        Dim ds As DataSet = New DataSet()        cmd1.Fill(ds, "authors")        Dim cmd2 As SqlDataAdapter = New SqlDataAdapter("select * from titleauthor", cnn)        cmd2.Fill(ds, "titles")        ds.Relations.Add("myrelation", _        ds.Tables("authors").Columns("au_id"), _        ds.Tables("titles").Columns("au_id"))        parentRepeater.DataSource = ds.Tables("authors")        parentRepeater.DataSource = ds.Tables("authors")        Page.DataBind()        cnn.Close()    End SubEnd Class				
back to the top
Repetidor aninhado

Propriedades

ID do Artigo: 326338 - Última Revisão: 07/30/2003 21:38:00 - Revisão: 4.3

Microsoft ASP.NET 1.1, Microsoft ASP.NET 1.0, Microsoft Visual Basic .NET 2003 Standard Edition, Microsoft Visual Basic .NET 2002 Standard Edition

  • kbmt kbdatabinding kbhowtomaster kbservercontrols KB326338 KbMtpt
Comentários