ASP.NET data mengikat Ikhtisar

Terjemahan Artikel Terjemahan Artikel
ID Artikel: 307860 - Melihat produk di mana artikel ini berlaku.
Artikel ini merujuk kepada .NET Microsoft berikut Ruang-nama perpustakaan kelas kerangka:
  • System.Data
  • System.Data.SqlClient
Perbesar semua | Perkecil semua

Pada Halaman ini

Ringkasan

Artikel ini menyediakan pengenalan ASP.NET data mengikat.

Untuk Ikhtisar ASP.NET tambahan, lihat berikut Artikel Pangkalan Pengetahuan Microsoft:
305140 ASP.NET roadmap

Informasi lebih lanjut

Dengan ASP.NET data binding, Anda dapat mengikat setiap kontrol server sederhana properti, koleksi, dan ekspresi atau metode. Ketika Anda menggunakan data yang mengikat, Anda memiliki lebih banyak fleksibilitas ketika Anda menggunakan data dari database atau cara lain.

Artikel ini membahas mengikat data berikut topik:

Data mengikat essentials

< % # %> Sintaks

ASP.NET memperkenalkan sintaks deklaratif yang baru, < % # % mengatakan. Ini sintaks adalah dasar untuk menggunakan data binding di halaman .aspx. Semua data binding ekspresi harus terkandung di dalam karakter ini. Daftar berikut mencakup contoh mengikat data sederhana dari beberapa sumber:
  • Properti sederhana (sintaks untuk pelanggan):
    <%# custID %>
    					
  • Koleksi (sintaks untuk memesan):
    <asp:ListBox id="List1" datasource='<%# myArray %>' runat="server">
    					
  • Ekspresi (sintaks untuk kontak):
    <%# ( customer.First Name + " " + customer.LastName ) %>
    					
  • Metode hasil (sintaks untuk saldo):
    <%# GetBalance(custID) %>
    					
Dalam contoh sebelumnya, inline < % # %> tag mengindikasikan dimana informasi dari data sumber spesifik untuk ditempatkan di Halaman .aspx. Contoh mengikat data berikut menggunakan kontrol TextBox Web server:
<asp:textbox id=txt text="<%# custID %>" runat=server />
				
Untuk informasi selengkapnya tentang sintaks mengikat data, lihat .NET berikut Kerangka Software Development Kit (SDK) dokumentasi:
Sintaks ekspresi mengikat data
.aspx http://msdn2.Microsoft.com/en-US/Library/bda9bbfx (vs.71)

Page.DataBind() vs Control.DataBind()

Setelah data tertentu sumber telah ditentukan dan menetapkan untuk objek pada halaman .aspx, Anda harus mengikat data untuk data ini sumber-sumber. Anda dapat menggunakan Page.DataBind atau metode Control.DataBind untuk mengikat data ke data sumber.

Keduanya Metode bekerja sama. Perbedaan utama adalah bahwa semua data sumber terikat metode ini disebut untuk kontrol server mereka setelah Page.DataBind . Tidak ada data yang telah diterjemahkan untuk kontrol sampai Anda secara eksplisit memanggil baik DataBind metode kontrol server Web atau sampai Anda panggil metode Page.DataBind halaman-tingkat. Biasanya, Page.DataBind (atau DataBind) disebut dari acara Page_Load .

Untuk informasi lebih lanjut tentang metode DataBind , lihat dokumentasi .NET Framework SDK berikut: Metode Control.DataBind
http://msdn.Microsoft.com/en-US/Library/w5e5992d.aspx

Daftar data-terikat kontrol

kendali daftar yang khusus kontrol server Web yang dapat mengikat untuk koleksi. Anda dapat menggunakan kontrol ini untuk menampilkan baris data dalam format disesuaikan template. Semua kendali daftar mengekspos DataSource dan sifat-sifat DataMember , yang digunakan untuk mengikat untuk koleksi.

Kontrol ini dapat mengikat mereka properti DataSource koleksi apa pun yang mendukung IEnumerable, ICollection, atau antarmuka IListSource .

Kontrol Repeater

Kontrol Repeater adalah kerangka, data-terikat daftar. Kontrol Repeater "lookless;" yang tidak memiliki built-in apapun tata letak atau gaya. Oleh karena itu, Anda harus secara eksplisit menyatakan semua tata letak HTML, format, dan tag gaya dalam kontrol template.

Berikut kode sampel menunjukkan bagaimana Anda dapat menggunakan satu kendali daftar, kontrol Repeater , untuk menampilkan data:

Catatan: Anda harus memodifikasi parameter string sambungan sebagai diperlukan untuk lingkungan Anda.

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>
				
Untuk informasi lebih lanjut tentang kontrol Repeater , lihat dokumentasi .NET Framework SDK berikut:
Kontrol repeater server Web
http://msdn.Microsoft.com/en-US/Library/x8f2zez5.aspx

Kontrol dataList

Kelas DataList adalah daftar fitur-kaya, kerangka, data-terikat. Kamu bisa memodifikasi template untuk menyesuaikan kontrol ini. Tidak seperti kontrol Repeater , DataList mendukung penyajian arah dan secara opsional dapat membuat dalam Daftar Tabel HTML saat menjalankan.

Untuk informasi lebih lanjut tentang kontrol DataList , lihat dokumentasi .NET Framework SDK berikut:
Kontrol Server Web dataList
.aspx http://msdn.Microsoft.com/en-US/Library/9cx2f3ks (VS.85)

Kontrol DataGrid

Kontrol DataGrid adalah sepenuhnya Terpilih, multicolumn, data-terikat grid. Untuk menyesuaikan tata letak kolom individu di DataGrid, Anda dapat menetapkan jenis kolom untuk "kerangka" dan memodifikasi kolom template. Kontrol DataGrid dapat membuat tanpa template, yang membuat kontrol ini ideal untuk pelaporan skenario. DataGrid juga mendukung pilihan pengeditan, penghapusan, paging, dan menyortir oleh kolom dan tombol tekan kolom.

Untuk informasi lebih lanjut tentang kontrol DataGrid , lihat dokumentasi .NET Framework SDK berikut:
Kontrol Server DataGrid Web
.aspx http://msdn.Microsoft.com/en-US/Library/aa710742 (VS.71)

Mengakses data

Bagian ini menjelaskan cara untuk mengakses data dari database dan mengikat data kendali daftar. Anda dapat menggunakan DataSet atau kelas hexadecimal untuk memperoleh data dari database.

DataSet kelas

DataSet mengandung representasi lengkap data, termasuk tabel atak struktur, hubungan antara Daftar Tabel, dan pengurutan data. Kelas-kelas DataSet cukup fleksibel untuk menyimpan setiap jenis informasi dari database ke file Extensible Markup Language (XML). Kelas DataSet stateless; itu adalah, Anda dapat melewati kelas-kelas ini dari klien ke server tanpa mengikat sumber daya koneksi server. Berikut kode ini menunjukkan bagaimana untuk menggunakan DataSet untuk mengikat data kontrol:

Catatan: Anda harus memodifikasi parameter string sambungan sebagai diperlukan untuk lingkungan Anda.

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 = ds
MyRepeater.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();
				
Untuk informasi lebih lanjut tentang kelas DataSet , lihat dokumentasi .NET Framework SDK berikut:
DataSet kelas
.aspx http://msdn2.Microsoft.com/en-US/Library/System.data.dataset (vs.71)

Hexadecimal kelas

Sebaliknya, jika Anda hanya perlu menampilkan (dan tidak berubah) data Itulah yang akan diberikan, kelas hexadecimal mungkin solusi yang lebih baik. Sebagai contoh, itu lebih baik untuk menggunakan hexadecimal untuk DropDownList kontrol karena hexadecimal kursor ke depan hanya data. Kode berikut menunjukkan cara menggunakan SqlDataReader kelas untuk mengikat data untuk mengontrol:

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();
				
Untuk informasi lebih lanjut tentang SqlDataReader kelas dan data akses dengan ASP.NET, lihat topik berikut dalam .NET Framework SDK dokumentasi:
SqlDataReader kelas
http://msdn.Microsoft.com/en-US/Library/System.data.sqlclient.sqldatareader.aspx

Mengembangkan kinerja tinggi ASP.NET aplikasi
.aspx http://msdn2.Microsoft.com/en-US/Library/5dws599a (vs.71)

Mengikat dalam kendali pola daftar

Anda dapat menggunakan template dalam kendali daftar untuk mengikat dan menyesuaikan individu catatan data sumber. Bagian ini mencakup tiga metode untuk melakukannya.

Metode DataBinder.Eval

Kapan data sumber bekerja dengan data yang dikembalikan dari database, data sumber dapat berisi banyak potongan-potongan informasi. Kamu bisa menggunakan metode DataBinder.Eval generik untuk gulung balik data. Dalam contoh kode berikut, "au_id" bidang kembali dari data sumber kontainer objek:
<%# DataBinder.Eval(Container.DataItem,"au_id") %>
				
Untuk informasi lebih lanjut tentang metode DataBinder.Eval , lihat dokumentasi .NET Framework SDK berikut:
Metode DataBinder.Eval
http://msdn.Microsoft.com/en-US/Library/4hx47hfe.aspx

Eksplisit casting

Jika Anda membutuhkan lebih banyak kontrol, menggunakan eksplisit casting. Eksplisit konversi menggunakan bukti kunci konversi jenis. Kata-kunci ini bertindak sebagai fungsi, tetapi Kompilator menghasilkan kode inline. Oleh karena itu, eksekusi sedikit lebih cepat daripada dengan fungsi panggilan. Contoh kode berikut menggunakan eksplisit casting:

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] %>
				
Catatan bahwa sebelumnya sampel menggunakan baik DataTable, yang merupakan subset dari DataSet, atau hexadecimal sebagai data sumber.

ItemDataBound acara

Anda juga dapat menggunakan acara ItemDataBound kontrol untuk mengikat data. Peristiwa ini terjadi ketika item ini adalah data yang kontrol terikat. Contoh kode HTML berikut mendefinisikan kontrol Repeater dengan ItemTemplate:
<asp:repeater id=rptr runat=server>
   <itemtemplate>
      <asp:label id=lblAuthorID runat=server />
   </itemtemplate>
</asp:repeater>
				
Metode berikut diperlukan dalam halaman Anda:

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 Sub

public 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 If
End 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()));
            }
}
				

Properti

ID Artikel: 307860 - Kajian Terakhir: 15 Oktober 2012 - Revisi: 3.0
Berlaku bagi:
  • 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
Kata kunci: 
kbarttyperoadmap kbdatabinding kbinfo kbservercontrols kbmt KB307860 KbMtid
Penerjemahan Mesin
PENTING: Artikel ini diterjemahkan menggunakan perangkat lunak mesin penerjemah Microsoft dan bukan oleh seorang penerjemah. Microsoft menawarkan artikel yang diterjemahkan oleh seorang penerjemah maupun artikel yang diterjemahkan menggunakan mesin sehingga Anda akan memiliki akses ke seluruh artikel baru yang diterbitkan di Pangkalan Pengetahuan (Knowledge Base) dalam bahasa yang Anda gunakan. Namun, artikel yang diterjemahkan menggunakan mesin tidak selalu sempurna. Artikel tersebut mungkin memiliki kesalahan kosa kata, sintaksis, atau tata bahasa, hampir sama seperti orang asing yang berbicara dalam bahasa Anda. Microsoft tidak bertanggung jawab terhadap akurasi, kesalahan atau kerusakan yang disebabkan karena kesalahan penerjemahan konten atau penggunaannya oleh para pelanggan. Microsoft juga sering memperbarui perangkat lunak mesin penerjemah.
Klik disini untuk melihat versi Inggris dari artikel ini: 307860

Berikan Masukan

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com