Şu anda çevrimdışısınız; İnternet'in yeniden bağlanması bekleniyor

asp.net veri bağlama genel bakış

Ö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: 307860
Bu makalede, aşağıdaki Microsoft .NET denilmektedir. Framework sınıf kitaplığı ad:
  • System.Data
  • System.Data.SqlClient
Özet
Bu makalede asp.net veri giriş sağlar. bağlama.

Aşağıdaki ek asp.net genel bakış için bkz: Microsoft Bilgi Bankası makalesi:
305140 asp.net Yol Haritası
Daha fazla bilgi
asp.net veri bağlama ile herhangi bir sunucu denetimi bağlayabilirsiniz. Basit Özellikler, koleksiyonlar, / ifadeler veya yöntemleri için. Kullandığınızda veri bağlama, bir veritabanındaki verileri kullandığınızda daha fazla esnekliğe sahip veya diğer anlamına gelir.

Bu makalede aşağıdaki veri bağlama adresleri Konular:

Veri bağlamanın temelleri

< % # %> Sözdizimi

asp.net yeni tanımlayıcı sözdizimi, < % # % > tanıtır. Bu bir .aspx sayfasında veri bağlama kullanarak temel sözdizimidir. Tüm veri bağlama ifadeler içinde bu karakter bulunmalıdır. Aşağıdaki liste birden çok kaynaktan basit veri bağlama örnekleri içerir:
  • Basit özellik (sözdizimi, bir müşteri için):
    <%# custID %>					
  • Koleksiyon (bir sipariş için sözdizimi):
    <asp:ListBox id="List1" datasource='<%# myArray %>' runat="server">					
  • (Bir kişi için sözdizimi) ifadesi:
    <%# ( customer.First Name + " " + customer.LastName ) %>					
  • Yöntem sonucu (bekleyen bakiyenin için sözdizimi):
    <%# GetBalance(custID) %>					
Önceki örneklerde, satır içi < etiketler % # %> Belirli bir veri kaynağından gelen bilgileri nereye yerleştirilmesi belirtin .aspx sayfası. Aşağıdaki veri bağlama örnek bir metin kutusu Web sunucusu denetimi kullanır:
<asp:textbox id=txt text="<%# custID %>" runat=server />				
Aşağıdaki .NET veri bağlama sözdizimi hakkında daha fazla bilgi için bkz. Framework Software Development Kit (sdk) belgeleri:

Page.DataBind() Control.DataBind() karşı

Sonra belirli veri kaynaklarına belirledi ve ayarlama bir .aspx sayfasında nesneler için bu verilerin veri bağlamanız gerekir kaynakları. Verileri veri kaynaklarına bağlamak için Page.DataBind veya Control.DataBind yöntemini kullanın.

Her ikisi de yöntemler benzer şekilde çalışır. Tüm veri kaynaklarına bağlı olan ana fark vardır. Page.DataBind sonra kendi sunucu denetimlerine yöntemi çağrılır. Veri denetimi için dek işlenir ya da DataBind yöntemini çağırmayı kadar veya Web sunucusu denetimi açıkça çağırmak Sayfa düzeyinde Page.DataBind yöntem. Genellikle, Page_Load olay Page.DataBind (veya DataBind) denir.

DataBind yöntemi hakkında daha fazla bilgi için aşağıdaki .NET Framework sdk belgelerine bakın: Control.DataBind yöntemi
http://msdn.microsoft.com/en-us/library/w5e5992d.aspx

Verilere bağlı liste denetimleri

Liste denetimleri bağlayabilirsiniz özel Web sunucusu denetimleri koleksiyonları için. Bu denetimler veri satırları görüntülemek için kullanabileceğiniz bir Özelleştirilmiş şablon biçimi. Tüm liste denetimleri, DataSource ve koleksiyonlara bağlama için kullanılan DataMember özelliklerini kullanır.

Bu denetimler, DataSource özelliğini IEnumerable, ICollectionya da IListSource arabirimini destekleyen herhangi bir koleksiyonu bağlayabilirsiniz.

Repeater denetimi

Repeater denetimi, veri bağlama şablonlu listesidir. Repeater denetimi "lookless;" başka bir deyişle, herhangi bir yerleşik yok Düzen veya stilleri. Bu nedenle, tüm html Düzeni açıkça bildirmeniz gerekir, biçimlendirme ve stil etiketleri denetim şablonları.

Aşağıdaki kod örnekleri, bir liste denetimi, Repeater denetimi, veri görüntülemek için nasıl kullanabileceğinizi gösterir:

Not: bağlantı dizesi parametreleri değiştirmeniz gerekir ortamınız için gerekli.

Visual Basic .NET
<%@ Page Language="vb" %><%@ Import Namespace="System.Data" %><%@ Import Namespace="System.Data.SqlClient" %><script runat="server">Sub Page_Load(sender As Object, e As EventArgs)   Dim cnn As SqlConnection = New SqlConnection("server=(local);" & _                                                "database=pubs;Integrated Security=SSPI")   Dim cmd As SqlDataAdapter = New SqlDataAdapter("select * from authors", cnn)   Dim ds As DataSet = New DataSet()   cmd.Fill(ds)   Repeater1.DataSource = ds   Repeater1.DataBind()End Sub</script><html><body>   <form id="Form1" method="post" runat="server">      <asp:Repeater id="Repeater1" runat="server">         <ItemTemplate>         <%# DataBinder.Eval(Container.DataItem,"au_id") %><br>	 </ItemTemplate>      </asp:Repeater>   </form></body></html>				
Visual C# .NET
<%@ Page language="c#" %><%@ Import Namespace="System.Data" %><%@ Import Namespace="System.Data.SqlClient" %><script runat="server">void Page_Load(Object sender, EventArgs e) {    SqlConnection cnn = new        SqlConnection("server=(local);database=pubs;Integrated Security=SSPI");    SqlDataAdapter da = new SqlDataAdapter("select * from authors", cnn);    DataSet ds = new DataSet();    da.Fill(ds, "authors");    Repeater1.DataSource = ds.Tables["authors"];   Repeater1.DataBind();}</script><html><body>   <form id="WebForm2" method="post" runat="server">      <asp:Repeater id="Repeater1" runat="server">         <ItemTemplate>         <%# DataBinder.Eval(Container.DataItem,"au_id") %><br>    	 </ItemTemplate>      </asp:Repeater>   </form></body></html>				
Visual J# .NET
<%@ Page language="VJ#" %><%@ Import Namespace="System.Data" %><%@ Import Namespace="System.Data.SqlClient" %> <script runat="server">void Page_Load(Object sender, EventArgs e) {     SqlConnection cnn = new SqlConnection("server=(local);database=pubs;Integrated         Security=SSPI");     SqlDataAdapter da = new SqlDataAdapter("select * from authors", cnn);     DataSet ds = new DataSet();     da.Fill(ds, "authors");     DataTableCollection dtc = ds.get_Tables();    int index = dtc.IndexOf("authors");    Repeater1.set_DataSource(dtc.get_Item(index));    Repeater1.DataBind();}</script><html><body>   <form id="WebForm2" method="post" runat="server">      <asp:Repeater id="Repeater1" runat="server">         <ItemTemplate>         <%# DataBinder.Eval(Container.DataItem,"au_id") %><br>             </ItemTemplate>      </asp:Repeater>   </form></body></html>				
Repeater denetimi hakkında daha fazla bilgi için aşağıdaki .NET Framework sdk belgelerine bakın:

DataList denetimi

DataList sınıf zengin, şablonlu, veriye bağlı bir listedir. Şunları yapabilirsiniz Bu denetimi özelleştirmek için şablonları değiştirebilirsiniz. Repeater denetimi, aksine DataList yön destekler ve isteğe bağlı olarak işleyebilen bir Çalışma zamanında html tablosu.

DataList denetimi hakkında daha fazla bilgi için aşağıdaki .NET Framework sdk belgelerine bakın:

DataGrid denetimi

DataGrid denetimi donatılmış, sütunlu, veriye bağlı bir ızgaradır. İçin DataGridtek tek sütunların düzenini özelleştirin, sütun türü "şablonlu" olarak ayarlayın ve değiştirme sütun şablonları. Bu denetim sağlayan şablonlar işleyebilir DataGrid denetimi Raporlama senaryoları için idealdir. DataGrid de seçimi, düzenleme, silme, sayfalama ve sıralama destekler sütun ve sütunlarla düğme.

DataGrid denetimi hakkında daha fazla bilgi için aşağıdaki .NET Framework sdk belgelerine bakın:

Verilere erişme

Bu bölümde anlatılmaktadır nasıl bir veritabanından veri erişim ve liste denetimleri veri bağlama. DataSet ya da DataReader sınıfı, bir veritabanından veri almak için kullanabilirsiniz.

DataSet sınıfı

Bir DataSet veri tablosu da dahil olmak üzere, tam bir temsilini içerir. yapısı, tabloları ve verileri sıralama arasındaki ilişkileri. Her türlü bilgileri depolamak için esnek DataSet sınıfları Genişletilebilir Biçimlendirme Dili (xml) dosyasına bir veritabanı. Durum bilgisi olmayan DataSet sınıfları; yani, bu sınıflardan iletebilirsiniz istemciden sunucuya sunucu bağlantı kaynaklarını getirmeye kadar olmadan. Aşağıdaki kod, bir DataSet verileri denetime bağlamak için nasıl kullanılacağını gösterir:

Not: bağlantı dizesi parametreleri değiştirmeniz gerekir ortamınız için gerekli.

Visual Basic .NET
Dim cnn As SqlConnection = New SqlConnection("server=(local);" & _                                             "database=pubs;Integrated Security=SSPI")Dim cmd As SqlDataAdapter = New SqlDataAdapter("select * from authors", cnn)Dim ds As DataSet = New DataSet()cmd.Fill(ds)MyRepeater.DataSource = dsMyRepeater.DataBind() 				
Visual C# .NET
SqlConnection cnn = new SqlConnection("server=(local);                                       database=pubs;Integrated Security=SSPI"); SqlDataAdapter da = new SqlDataAdapter("select * from authors", cnn); DataSet ds = new DataSet(); da.Fill(ds);MyRepeater.DataSource = ds;MyRepeater.DataBind(); 				
Visual J# .NET
SqlConnection cnn = new SqlConnection("server=(local);                                       database=pubs;Integrated Security=SSPI"); SqlDataAdapter da = new SqlDataAdapter("select * from authors", cnn); DataSet ds = new DataSet(); da.Fill(ds); MyRepeater.set_DataSource(ds);MyRepeater.DataBind();				
DataSet sınıfı hakkında daha fazla bilgi için aşağıdaki .NET Framework sdk belgelerine bakın:

DataReader sınıfı

Diğer yandan, yalnızca veri görüntülemek için (ve değişmemesi) gereksiniminiz varsa İşlenecek olan, bir DataReader sınıfı daha iyi bir çözüm olabilir. Örneğin, kullanmak daha iyi olur çünkü DataReader veri salt ileri imleci bir DropDownList için DataReader denetler. Aşağıdaki kod gösterir SqlDataReader sınıfı bir denetime veri bağlamak için nasıl kullanılacağı:

Visual Basic .NET
Dim cnn As SqlConnection = New SqlConnection("server=(local);" & _                                             "database=pubs;Integrated Security=SSPI")Dim cmd As SqlCommand = New SqlCommand("select * from authors", cnn)cnn.Open()MyRepeater.DataSource = cmd.ExecuteReader(CommandBehavior.CloseConnection)MyRepeater.DataBind()				
Visual C# .NET
SqlConnection cnn = new SqlConnection("server=(local);                                       database=pubs;Integrated Security=SSPI");SqlCommand cmd = new SqlCommand("select * from authors", cnn);cnn.Open();MyRepeater.DataSource = cmd.ExecuteReader(CommandBehavior.CloseConnection);MyRepeater.DataBind();				
Visual J# .NET
SqlConnection cnn = new SqlConnection("server=(local);                                       database=pubs;Integrated Security=SSPI"); SqlCommand cmd = new SqlCommand("select * from authors", cnn); cnn.Open();MyRepeater.set_DataSource(cmd.ExecuteReader(CommandBehavior.CloseConnection));MyRepeater.DataBind();				
Aşağıdaki konular, asp.net ile SqlDataReader sınıfı ve veri erişimi hakkında daha fazla bilgi için bkz: .net Framework sdk belgeleri:

Liste denetim şablonlarında bağlama

Liste denetimleri bağlamak ve için şablonları kullanabilirsiniz veri kaynağının tek tek kayıtları özelleştirin. Bu bölümde üç içerir. Bunu yapmak için yöntem.

DataBinder.Eval yöntemini

Ne zaman çalışır veri kaynağı tarafından döndürülen verileri içeren bir Veritabanı, veri kaynağı çeşitli bilgi parçaları içerebilir. Şunları yapabilirsiniz Veri döndürmek için genel DataBinder.Eval yöntemini kullanın. Aşağıdaki kod örneğinde, "au_Id" alan container nesnesinin veri kaynağından döndürülür:
<%# DataBinder.Eval(Container.DataItem,"au_id") %>				
DataBinder.Eval yöntemini hakkında daha fazla bilgi için aşağıdaki .NET Framework sdk belgelerine bakın:

Açık tür atama

Daha fazla denetime gereksinim duyarsanız, açık çevrim kullanın. Açık dönüştürme türü dönüştürme anahtar sözcüğünü kullanır. Bu anahtar sözcükler işlevler davranır ancak satır içi kod derleyici oluşturur. Bu nedenle, yürütme biraz daha hızlıdır bir işlev çağrısı daha. Aşağıdaki kod örnekleri açık çevrim kullanın:

Visual Basic .NET
' DataTable as the DataSource<%# CType(Container.DataItem, System.Data.DataRowView)("au_id") %>' DataReader as the DataSource<%# CType(Container.DataItem, System.Data.Common.DbDataRecord)("au_id") %>' DataReader as the DataSource<%# CType(Container.DataItem, System.Data.Common.DbDataRecord)(0) %>				
Visual C# .NET
// DataTable as the DataSource<%# ((System.Data.DataRowView)Container.DataItem)["au_id"] %> // DataReader as the DataSource<%# ((System.Data.Common.DbDataRecord)Container.DataItem)["au_id"] %>// DataReader as the DataSource<%# ((System.Data.Common.DbDataRecord)Container.DataItem)[0] %>				
Visual J# .NET
// DataTable as the DataSource<%# ((System.Data.DataRowView)Container.DataItem)["au_id"] %> // DataReader as the DataSource<%# ((System.Data.Common.DbDataRecord)Container.DataItem)["au_id"] %>// DataReader as the DataSource<%# ((System.Data.Common.DbDataRecord)Container.DataItem)[0] %>				
Önceki kullanım ya da bir alt kümesi bir DataSetya da DataReader veri kaynağı olarak bir DataTableörnekler olduğunu unutmayın.

ItemDataBound olay

ItemDataBound olay denetimin veri bağlamak için de kullanabilirsiniz. Bu olay oluşur, bir Öğe verileri denetime bağlı değil. Aşağıdaki örnek html kod ile bir ItemTemplateRepeater denetimi tanımlar:
<asp:repeater id=rptr runat=server>   <itemtemplate>      <asp:label id=lblAuthorID runat=server />   </itemtemplate></asp:repeater>				
Aşağıdaki yöntemler, sayfanızda gereklidir:

Visual Basic .NET
public Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs)     'TODO: Retrieve data from a database,   'and bind the data to a list control.End Subpublic Sub rptr_OnItemDataBound(ByVal sender As Object, _ByVal e As System.Web.UI.WebControls.RepeaterItemEventArgs) Handles rptr.ItemDataBound   Dim rec As DataRowView   rec = e.Item.DataItem   'Make sure that you have the data.   If Not IsDBNull(rec) Then      Dim l1 As Label      l1 = e.Item.FindControl("lblAuthorID")      l1.Text = rec("au_id").ToString()   End IfEnd Sub				
Visual C# .NET
public void Page_Init(object sender, System.EventArgs e){   rptr.ItemDataBound += new RepeaterItemEventHandler(rptr_OnItemDataBound);}public void Page_Load(object sender, System.EventArgs e){   // TODO: Retrieve data from a database,   // and bind the data to a list control.}public void rptr_OnItemDataBound(object sender, RepeaterItemEventArgs e){   System.Data.Common.DbDataRecord rec = (System.Data.Common.DbDataRecord)                                          e.Item.DataItem;   if(rec!=null) //Make sure that you have the data.   {      Label l1 = (Label)e.Item.FindControl("lblAuthorID");      l1.Text = rec["au_id"].ToString();   }}				
Visual J# .NET
public void Page_Init(Object sender, System.EventArgs e){            rptr.add_ItemDataBound(new RepeaterItemEventHandler(rptr_OnItemDataBound));}private void Page_Load(Object sender, System.EventArgs e){            // TODO: Retrieve data from a database,            // and bind the data to a list control.}public void rptr_OnItemDataBound(Object sender, RepeaterItemEventArgs e){            System.Data.Common.DbDataRecord rec = (System.Data.Common.DbDataRecord)                                                   e.get_Item().get_DataItem();            if (rec != null) //Make sure that you have the data.            {                        Label l1 = (Label)e.get_Item().FindControl("lblAuthorID");                        l1.set_Text(((rec.get_Item("au_id")).ToString()));            }}				
veri bağlama veri sınırlama

Uyarı: Bu makalenin çevirisi otomatik olarak yapılmıştır

Özellikler

Makale No: 307860 - Son İnceleme: 10/15/2012 03:21:00 - Düzeltme: 1.0

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

  • kbarttyperoadmap kbdatabinding kbinfo kbservercontrols kbmt KB307860 KbMttr
Geri bildirim