Makale numarası: 306154 - Son Gözden Geçirme: 29 Mart 2007 Perşembe - Gözden geçirme: 4.6

Nasıl yapılır: iç içe Repeater denetimleri ve Visual C#. NET'i kullanarak, hiyerar?ik verileri görüntüle

Sistem İpucuBu makale, kullandığınızdan farklı bir işletim sistemine yöneliktir. Sizinle ilgili olmayabilecek makale içeriği devre dışı bırakıldı.

Bu Sayfada

Hepsini aç | Hepsini kapa

Özet

Bu makalede, iç içe geçmiş Repeater denetimleri hiyerarşik verileri görüntülemek için nasıl kullanılacağı açıklanır. Bu, diğer liste bağlı denetimlere uygulayabilirsiniz.


Ana tabloya bağlayın.

  1. Microsoft Visual Studio .NET'i başlatın.
  2. Dosya menüsünde Yeni ' nin üzerine gelin ve sonra Project ' i tıklatın.
  3. Project Types altında Visual C# Projects ' ı tıklatın ve ASP.NET Web uygulamasışablonları altında tıklatın.
  4. WebApplication Konum</a0> kutusunda silmek #) ve sonra da NestedRepeater türü. Yerel sunucuyu kullanıyorsanız, sunucu adını http://localhost bırakın. Aşağıdaki yolu konumu iletişim kutusunda görüntülenir:
    http://localhost/ NestedRepeater
    Tamam ' ı tıklatın.
  5. Solution ExplorerNestedRepeater proje adı düğümünü sağ tıklatın, sonra da Ekle işaret ve Web formu Ekle</a1>'ı tıklatın.
  6. Web formu adlandırmak için <a0></a0>, NestedRepeater yazın ve ' ı tıklatın.
  7. Yeni Web formu oluşturulur. Tasarım görünümü içinde tümleşik geliştirme ortamı (IDE), Microsoft Visual Studio. NET'in açılır. Araç, Repeater denetimi seçin ve ardından Web formu sayfaya sürükleyin.
  8. Bu Repeater denetimin <a1>KIMLIK</a1> özelliğini parentRepeater için değiştirin.
  9. Bu Web Form için <a2>HTML</a2> görünümüne geçin. Bunu yapmak için <a0></a0>, Tasarımcı sol alt köşesindeki <a2>HTML</a2> sekmesini tıklatın. Aşağıdaki HTML kodu Repeater denetimi oluşturur:
    <asp:Repeater id="parentRepeater" runat="server"></asp:Repeater>
    					
  10. Repeater etiketlerinde aşağıdaki kodu ekleyin:
    <itemtemplate>
         <b><%# DataBinder.Eval(Container.DataItem, "au_id") %></b><br>
    </itemtemplate>
    					
    Bunu sonra HTML kodunu Repeater şöyledir:
    <asp:Repeater id="parentRepeater" runat="server">
    	<itemtemplate>
    	     <b><%# DataBinder.Eval(Container.DataItem, "au_id") %></b><br>	
          </itemtemplate>
    </asp:Repeater>
    					
  11. Solution Explorer'da (Çözüm Gezgini), NestedRepeater.aspx ' ı sağ tıklatın ve sonra da NestedRepeater.aspx.cs arka planda kodlama dosyaya geçiş yapmak için Kod Görüntüle ' yi tıklatın.
  12. Aşağıdaki ad alanı bildirimi dosyasının en üstüne ekleyin:
    using System.Data;
    using System.Data.SqlClient;
    					
  13. Page_Load olayı pubs veritabanına bir bağlantı oluşturmak için aşağıdaki kodu ekleyin ve sonra yazarlar tablosunu Repeater denetime bağlamak için:
          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();
           }
    					
    Not: veritabanı bağlantı dizesi ortamınıza uygun şekilde değiştirmeniz gerekebilir.

  14. Tüm dosyaları kaydedin.
  15. Solution Explorer the NestedRepeater.aspx'ı sağ tıklatın ve sonra da Başlangıç sayfası olarak ayarla'yı tıklatın.
  16. Yapı) menüsünde Proje derlemeye Build Solution ' ı tıklatın.
  17. .Aspx sayfası tarayıcıda görüntülemek ve sayfayı böylece kadar çalıştığını doğrulayın.

    Çıktı aşağıdaki gibi görünmelidir:
    • 1176 32 172
    • 213 46 8915
    • 238 95 7766
    • 267 41 2394
    • ...

Alt tablosu bağlayın.

  1. <a0>NestedRepeater.aspx</a0> sayfasının <a1>HTML</a1> görünümünde aşağıdaki kod satırını bulun:
    <b><%# DataBinder.Eval(Container.DataItem, "au_id") %></b><br>
    						
    Bu koddan sonra aşağıdaki kodu ekleyin:
    <asp:repeater id="childRepeater" runat="server">
    		<itemtemplate>
    	            <%# DataBinder.Eval(Container.DataItem, "[\"title_id\"]")%><br>
    		</itemtemplate>
    </asp:repeater>
    						
    Bu yeni kod ikinci Repeater denetim Repeater denetimin üst <a1>ıtemtemplate</a1> özelliğini ekler.
  2. DataSource özelliği için alt Repeater denetim kümesi gibi:
    <asp:repeater ... datasource='<%# ((DataRowView)Container.DataItem)
          .Row.GetChildRows("myrelation") %>' >
    					
    Repeater denetim için bağımlı DataSource özelliği ayarladıktan sonra (üst ve alt) iki Repeater denetimler için HTML kodu aşağıdaki gibi görünür:
    <asp:Repeater id="parentRepeater" runat="server">
    	<itemtemplate>
    		<b>
    		 <%# DataBinder.Eval(Container.DataItem, "au_id") %>
    		</b>
    		<br>
    		<asp:repeater id="childRepeater" runat="server" 
                        datasource='<%# ((DataRowView)Container.DataItem)
          .Row.GetChildRows("myrelation") %>' >
    			<itemtemplate>
    				<%# DataBinder.Eval(Container.DataItem, "[\"title_id\"]")%><br>	
    			</itemtemplate>
    		</asp:Repeater> 
    	</itemtemplate>
    </asp:Repeater>
    					
  3. Aşağıdaki sayfa yönergesi, sayfanın en üstüne ekleyin:
    <%@ Import Namespace="System.Data" %>
    					
  4. Arka planda kodlama sayfasında aşağıdaki satırda
    //Insert code in step 4 of the next section here.
    						
    yerine aşağıdaki kodu:
             //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"]);
    
    					
    This adds the Titles Table to the DataSet, and then adds the relationships Between the Authors and Titles Tables.
  5. Kaydedin ve bu uygulamayı derleyin.
  6. Sayfayı tarayıcıda görüntülemek ve sayfayı şu ana kadar çalışır durumda olduğundan emin olmak. Çıktı aşağıdaki gibi görünmelidir:
    1176 32 172
    PS3333
    213 46 8915
    BU1032
    BU2075
    238 95 7766
    PC1035
    267 41 2394
    BU1111
    TC7777
    ...

Tam kod listesi

Nestedrepeater.aspx

<%@ Page language="c#" Codebehind="NestedRepeater.aspx.cs" AutoEventWireup="false" Inherits="NestedRepeater.NestedRepeater" %>
<%@ Import Namespace="System.Data" %>

<html>
<body>
<form runat=server>

<!-- start parent repeater -->
<asp:repeater id="parentRepeater" runat="server">
   <itemtemplate>
      <b><%# DataBinder.Eval(Container.DataItem,"au_id") %></b><br>

      <!-- start child repeater -->
      <asp:repeater id="childRepeater" datasource='<%# ((DataRowView)Container.DataItem)
      .Row.GetChildRows("myrelation") %>' runat="server">

         <itemtemplate>
            <%# DataBinder.Eval(Container.DataItem, "[\"title_id\"]")%><br>
         </itemtemplate>
      </asp:repeater>
      <!-- end child repeater -->

   </itemtemplate>
</asp:repeater>
<!-- end parent repeater -->

</form>
</body>
</html>
				

Nestedrepeater.aspx.cs

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);
      }
   }
}
				

Referanslar

Daha fazla bilgi için Microsoft .NET Framework Software Development Kit (SDK) aşağıdaki konulara bakın:
Tablolar arasında ilişki ekleme
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpguide/html/cpconaddingrelationshipbetweentwotables.asp (http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpguide/html/cpconaddingrelationshipbetweentwotables.asp)

Tablolar arasında ilişki gezinme
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpguide/html/cpconnavigatingrelationshipbetweentwotables.asp (http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpguide/html/cpconnavigatingrelationshipbetweentwotables.asp)

Repeater Web Server denetimi
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpgenref/html/cpconrepeaterwebservercontrol.asp (http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpgenref/html/cpconrepeaterwebservercontrol.asp)

Bu makaledeki bilginin uygulandığı durum:
  • Microsoft ASP.NET 1.0
  • Microsoft ASP.NET 1.1
  • Microsoft Visual C# .NET 2002 Standard Edition
  • Microsoft Visual C# .NET 2003 Standard Edition
Anahtar Kelimeler: 
kbmt kbdatabinding kbhowtomaster kbservercontrols KB306154 KbMttr
Otomatik TercümeOtomatik Tercüme
ÖNEMLİ: Bu makale, bir kişi tarafından çevrilmek yerine, Microsoft makine-çevirisi yazılımı ile çevrilmiştir. Microsoft size hem kişiler tarafından çevrilmiş, hem de makine-çevrisi ile çevrilmiş makaleler sunar. Böylelikle, bilgi bankamızdaki tüm makalelere, kendi dilinizde ulaşmış olursunuz. Bununla birlikte, makine tarafından çevrilmiş makaleler mükemmel değildir. Bir yabancının sizin dilinizde konuşurken yapabileceği hatalar gibi, makale; kelime dağarcığı, söz dizim kuralları veya dil bilgisi açısından yanlışlar içerebilir. Microsoft, içeriğin yanlış çevrimi veya onun müşteri tarafından kullanımından doğan; kusur, hata veya zarardan sorumlu değildir. Microsoft ayrıca makine çevirisi yazılımını sıkça güncellemektedir.
Makalenin İngilizcesi aşağıdaki gibidir:306154  (http://support.microsoft.com/kb/306154/en-us/ )