ASP.NET - Kawalan Repeater
- Halaman Sebelumnya Buku XML WebForms
- Halaman Berikutnya DataList WebForms
Kawalan Repeater digunakan untuk menunjukkan senarai objek yang diulang, yang dihadkan di dalam kawalan ini.
Contoh
Mengikat DataSet kepada Kawalan Repeater
Kawalan Repeater digunakan untuk menunjukkan senarai objek yang diulang, yang dihadkan di dalam kawalan ini. Kawalan Repeater boleh diikat kepada jadual pangkalan data, fail XML atau senarai objek lain. Di sini, kami akan menunjukkan bagaimana memikat fail XML kepada kawalan Repeater.
Kami akan menggunakan berkas XML berikut ini ("cdcatalog.xml") dalam contoh ini:
<?xml version="1.0" encoding="ISO-8859-1"?> <catalog> <cd> <title>Empire Burlesque</title> <artist>Bob Dylan</artist> <country>USA</country> <company>Columbia</company> <price>10.90</price> <year>1985</year> </cd> <cd> <title>Hide your heart</title> <artist>Bonnie Tyler</artist> <country>UK</country> <company>CBS Records</company> <price>9.90</price> <year>1988</year> </cd> <cd> <title>Greatest Hits</title> <artist>Dolly Parton</artist> <country>USA</country> <company>RCA</company> <price>9.90</price> <year>1982</year> </cd> <cd> <title>Still got the blues</title> <artist>Gary Moore</artist> <country>UK</country> <company>Virgin records</company> <price>10.20</price> <year>1990</year> </cd> <cd> <title>Eros</title> <artist>Eros Ramazzotti</artist> <country>EU</country> <company>BMG</company> <price>9.90</price> <year>1997</year> </cd> </catalog>
Lihat berkas XML ini:cdcatalog.xml
Pertama-tama, import "System.Data" namespace. Kita memerlukan namespace ini untuk bekerja bersama dengan objek DataSet. Di atas halaman .aspx, termasuk perintah berikut ini:
<%@ Import Namespace="System.Data" %>
Sekarang, buat DataSet untuk fail XML ini dan tarik fail XML ini ke DataSet ketika halaman disiarkan untuk pertama kalinya:
<script runat="server"> sub Page_Load if Not Page.IsPostBack then dim mycdcatalog=New DataSet mycdcatalog.ReadXml(MapPath("cdcatalog.xml")) end if end sub
Kemudian, kita membuat perekam Repeater dalam halaman .aspx. Konten elemen <HeaderTemplate> hanya muncul sekali dalam output, sementara konten elemen <ItemTemplate> akan muncul sekali untuk setiap "record" dalam DataSet, akhirnya, konten elemen <FooterTemplate> hanya muncul sekali dalam output:
<html> <body> <form runat="server"> <asp:Repeater id="cdcatalog" runat="server"> <HeaderTemplate> ... </HeaderTemplate> <ItemTemplate> ... </ItemTemplate> <FooterTemplate> ... </FooterTemplate> </asp:Repeater> </form> </body> </html>
Kemudian, kita menambahkan skrip untuk menghasilkan DataSet dan mengikat DataSet mycdcatalog ini ke perekam Repeater. Kita juga menggunakan tag HTML untuk mengisi perekam Repeater ini, dan mengikat item data ke sel dalam bagian <ItemTemplate> menggunakan metode <%#Container.DataItem("fieldname")%>:
<%@ Import Namespace="System.Data" %> <script runat="server"> sub Page_Load if Not Page.IsPostBack then dim mycdcatalog=New DataSet mycdcatalog.ReadXml(MapPath("cdcatalog.xml")) cdcatalog.DataSource=mycdcatalog cdcatalog.DataBind() end if end sub </script> <html> <body> <form runat="server"> <asp:Repeater id="cdcatalog" runat="server"> <HeaderTemplate> <table border="1" width="100%"> <tr> <th>Title</th> <th>Artist</th> <th>Country</th> <th>Company</th> <th>Price</th> <th>Year</th> </tr> </HeaderTemplate> <ItemTemplate> <tr> <td><%#Container.DataItem("title")%></td> <td><%#Container.DataItem("artist")%></td> <td><%#Container.DataItem("country")%></td> <td><%#Container.DataItem("company")%></td> <td><%#Container.DataItem("price")%></td> <td><%#Container.DataItem("year")%></td> </tr> </ItemTemplate> <FooterTemplate> </table> </FooterTemplate> </asp:Repeater> </form> </body> </html>
Gunakan <AlternatingItemTemplate>
Anda boleh menambahkan elemen <AlternatingItemTemplate> setelah elemen <ItemTemplate> untuk menyatakan penampilan baris yang berlawanan. Dalam contoh di bawah, setiap baris dalam tabel akan ditampilkan dengan latar belakang abu-abu:
<%@ Import Namespace="System.Data" %> <script runat="server"> sub Page_Load if Not Page.IsPostBack then dim mycdcatalog=New DataSet mycdcatalog.ReadXml(MapPath("cdcatalog.xml")) cdcatalog.DataSource=mycdcatalog cdcatalog.DataBind() end if end sub </script> <html> <body> <form runat="server"> <asp:Repeater id="cdcatalog" runat="server"> <HeaderTemplate> <table border="1" width="100%"> <tr> <th>Title</th> <th>Artist</th> <th>Country</th> <th>Company</th> <th>Price</th> <th>Year</th> </tr> </HeaderTemplate> <ItemTemplate> <tr> <td><%#Container.DataItem("title")%></td> <td><%#Container.DataItem("artist")%></td> <td><%#Container.DataItem("country")%></td> <td><%#Container.DataItem("company")%></td> <td><%#Container.DataItem("price")%></td> <td><%#Container.DataItem("year")%></td> </tr> </ItemTemplate> <AlternatingItemTemplate> <tr bgcolor="#e8e8e8"> <td><%#Container.DataItem("title")%></td> <td><%#Container.DataItem("artist")%></td> <td><%#Container.DataItem("country")%></td> <td><%#Container.DataItem("company")%></td> <td><%#Container.DataItem("price")%></td> <td><%#Container.DataItem("year")%></td> </tr> </AlternatingItemTemplate> <FooterTemplate> </table> </FooterTemplate> </asp:Repeater> </form> </body> </html>
Gunakan <SeparatorTemplate>
Elemen <SeparatorTemplate> boleh digunakan untuk menyatakan simbol pemisah antara setiap rekod. Contoh di bawah menambahkan garis horisontal di antara setiap baris tabel:
<%@ Import Namespace="System.Data" %> <script runat="server"> sub Page_Load if Not Page.IsPostBack then dim mycdcatalog=New DataSet mycdcatalog.ReadXml(MapPath("cdcatalog.xml")) cdcatalog.DataSource=mycdcatalog cdcatalog.DataBind() end if end sub </script> <html> <body> <form runat="server"> <asp:Repeater id="cdcatalog" runat="server"> <HeaderTemplate> <table border="0" width="100%"> <tr> <th>Title</th> <th>Artist</th> <th>Country</th> <th>Company</th> <th>Price</th> <th>Year</th> </tr> </HeaderTemplate> <ItemTemplate> <tr> <td><%#Container.DataItem("title")%></td> <td><%#Container.DataItem("artist")%></td> <td><%#Container.DataItem("country")%></td> <td><%#Container.DataItem("company")%></td> <td><%#Container.DataItem("price")%></td> <td><%#Container.DataItem("year")%></td> </tr> </ItemTemplate> <SeparatorTemplate> <tr> <td colspan="6"><hr /></td> </tr> </SeparatorTemplate> <FooterTemplate> </table> </FooterTemplate> </asp:Repeater> </form> </body> </html>
- Halaman Sebelumnya Buku XML WebForms
- Halaman Berikutnya DataList WebForms