Repeaterコントロール


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