Este artigo descreve como usar controles Repeater aninhados para exibir dados hierárquicos. Você pode aplicar esse conceito
para outros controles ligados a lista.
Vincular a tabela pai
Inicie o Microsoft Visual Studio.NET.
No menu arquivo , aponte para novoe clique em projeto.
Clique em Projetos do Visual C# em Tipos de projetoe clique em ASP.NET Web Application em modelos.
Na caixa local , exclua o WebApplication#, e
Digite NestedRepeater. Se você usar o servidor local
Deixe o nome do servidor como http://localhost. Aparece o seguinte caminho na caixa local :
http://localhost/ NestedRepeater
Clique em OK.
No Solution Explorer, clique com o botão direito no nó do nome de projeto NestedRepeater , aponte para Adde, em seguida, clique em Add Web Form.
Para nomear o formulário da Web, digiteNestedRepeatere clique em Abrir.
O novo formulário da Web é criado. Ele é aberto no modo Design do
Ambiente de desenvolvimento integrado (IDE) do Microsoft Visual Studio.NET. Do
caixa de ferramentas, selecione o controle Repeater e arraste-o para a página de formulário da Web.
Altere a propriedade ID do controle Repeater para parentRepeater.
Alterne para o modo de exibição HTML desse formulário da Web. Para fazer isso, clique em
na guia HTML no canto inferior esquerdo do Designer. O controle Repeater gera o seguinte código HTML:
No Solution Explorer, clique com o botão direito NestedRepeater.aspxe clique em View Code para alternar para o code-behind NestedRepeater.aspx.cs
arquivo.
Adicione a seguinte declaração de namespace na parte superior do
arquivo:
using System.Data;
using System.Data.SqlClient;
Adicione o seguinte código ao evento Page_Load para criar uma conexão ao banco de dados Pubs e vincular a tabela autores ao controle Repeater :
public void Page_Load(object sender, EventArgs e)
{
//Create the connection and DataAdapter for the Authors table.
SqlConnection cnn = new SqlConnection("server=(local);database=pubs; Integrated Security=SSPI");
SqlDataAdapter cmd1 = new SqlDataAdapter("select * from authors",cnn);
//Create and fill the DataSet.
DataSet ds = new DataSet();
cmd1.Fill(ds,"authors");
//Insert code in step 4 of the next section here.
//Bind the Authors table to the parent Repeater control, and call DataBind.
parentRepeater.DataSource = ds.Tables["authors"];
Page.DataBind();
//Close the connection.
cnn.Close();
}
Observação: talvez seja necessário modificar a seqüência de conexão de banco de dados como
apropriado para seu ambiente.
Salve todos os arquivos.
Em Explorer solução, com o botão direito do
NestedRepeater.aspx e clique em Definir como página inicial.
No menu Build , clique em Build Solution para compilar o projeto.
Exibir a página. aspx no navegador e verifique
a página funciona até o momento.
A saída deve aparecer da seguinte maneira:
172-32-1176
213-46-8915
238-95-7766
267-41-2394
...
Vincular a tabela filho
No modo de exibição HTML da página NestedRepeater.aspx, localize
a seguinte linha de código:
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:
Adicione a seguinte diretiva de página na parte superior da página:
<%@ Import Namespace="System.Data" %>
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 seguinte código:
//Create a second DataAdapter for the Titles table.
SqlDataAdapter cmd2 = new SqlDataAdapter("select * from titleauthor",cnn);
cmd2.Fill(ds,"titles");
//Create the relation between the Authors and Titles tables.
ds.Relations.Add("myrelation",
ds.Tables["authors"].Columns["au_id"],
ds.Tables["titles"].Columns["au_id"]);
Isso adiciona a tabela de títulos para o DataSete, em seguida, adiciona as relações entre autores e títulos
tabelas.
Salvar e compilar o aplicativo.
Exibir a página no navegador e verificar se a página
funciona até agora. A saída deve aparecer da seguinte maneira:
using System;
using System.Data;
using System.Data.SqlClient;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
namespace NestedRepeater
{
public class NestedRepeater : System.Web.UI.Page
{
protected System.Web.UI.WebControls.Repeater parentRepeater;
public NestedRepeater()
{
Page.Init += new System.EventHandler(Page_Init);
}
public void Page_Load(object sender, EventArgs e)
{
//Create the connection and DataAdapter for the Authors table.
SqlConnection cnn = new SqlConnection("server=(local);database=pubs; Integrated Security=SSPI ;");
SqlDataAdapter cmd1 = new SqlDataAdapter("select * from authors",cnn);
//Create and fill the DataSet.
DataSet ds = new DataSet();
cmd1.Fill(ds,"authors");
//Create a second DataAdapter for the Titles table.
SqlDataAdapter cmd2 = new SqlDataAdapter("select * from titleauthor",cnn);
cmd2.Fill(ds,"titles");
//Create the relation bewtween the Authors and Titles tables.
ds.Relations.Add("myrelation",
ds.Tables["authors"].Columns["au_id"],
ds.Tables["titles"].Columns["au_id"]);
//Bind the Authors table to the parent Repeater control, and call DataBind.
parentRepeater.DataSource = ds.Tables["authors"];
Page.DataBind();
//Close the connection.
cnn.Close();
}
private void Page_Init(object sender, EventArgs e)
{
InitializeComponent();
}
private void InitializeComponent()
{
this.Load += new System.EventHandler(this.Page_Load);
}
}
}
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: 306154
Obrigado! Seus comentários são usados para nos ajudar a aperfeiçoar o conteúdo de suporte. Para obter mais opções de ajuda, visite a Home Page de Ajuda e Suporte.