RepeaterコントロールはDataSetのデータ件数を繰り返し出力するコントロール。
表などはDataGridで作成した方が簡単だが、出力するレイアウトを細かく指定したい場合はRepeaterの方が適している。
ただし、HTMLをゴリゴリ記述しないといけない。
使用例は以下の通り
WebForm1.aspx
<%@ Page Language="vb" AutoEventWireup="false" CodeBehind="WebForm1.aspx.vb" Inherits="webapp1.WebForm1" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" > <head runat="server"> <title>無題のページ</title> </head> <body> <form id="form1" runat="server"> <div> <%-- Repeaterの定義--%> <asp:Repeater id="repeater1" runat="server"> <%-- Headerの定義--%> <HeaderTemplate> <table width="90%" align="center" border="1"> <tr> <td> HogeNo </td> <td> HogeName </td> </HeaderTemplate> <%-- 明細部の定義--%> <ItemTemplate> <tr> <td> <%#DataBinder.Eval(Container.DataItem, "hogeNo")%> </td> <td> <%#DataBinder.Eval(Container.DataItem, "hogeName")%> </td> </tr> </ItemTemplate> <%-- Footerの定義--%> <FooterTemplate> </table> </FooterTemplate> </asp:Repeater> </div> </form> </body> </html>
WebForm1.aspx.vb
Public Partial Class WebForm1 Inherits System.Web.UI.Page Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load If IsPostBack = False Then Call Repeater1_DataSet() End If End Sub 'RepeaterにDataSetを連携 Private Sub Repeater1_DataSet() Dim dt As New DataTable Dim dr As DataRow '列の定義 dt.Columns.Add(New DataColumn("hogeNo", GetType(Integer))) dt.Columns.Add(New DataColumn("hogeName", GetType(String))) '値を設定 dr = dt.NewRow() dr(0) = 1 dr(1) = "harada" dt.Rows.Add(dr) dr = dt.NewRow() dr(0) = 2 dr(1) = "go" dt.Rows.Add(dr) dr = dt.NewRow() dr(0) = 3 dr(1) = "test" dt.Rows.Add(dr) repeater1.DataSource = dt repeater1.DataBind() End Sub End Class
動作確認環境:Visual Stadio 2005