다음을 통해 공유


Repeater 웹 서버 컨트롤 선언 구문

업데이트: 2007년 11월

목록에 표시된 각 항목에 대해 지정된 템플릿을 반복 사용하여 레이아웃을 사용자 지정할 수 있는 데이터 바인딩된 목록 컨트롤을 만드는 데 사용합니다.

<asp:Repeater
    DataMember="string"
    DataSource="string"
    DataSourceID="string"
    EnableTheming="True|False"
    EnableViewState="True|False"
    ID="string"
    OnDataBinding="DataBinding event handler"
    OnDisposed="Disposed event handler"
    OnInit="Init event handler"
    OnItemCommand="ItemCommand event handler"
    OnItemCreated="ItemCreated event handler"
    OnItemDataBound="ItemDataBound event handler"
    OnLoad="Load event handler"
    OnPreRender="PreRender event handler"
    OnUnload="Unload event handler"
    runat="server"
    Visible="True|False"
>
        <AlternatingItemTemplate>
            <!-- child controls -->
        </AlternatingItemTemplate>
        <FooterTemplate>
            <!-- child controls -->
        </FooterTemplate>
        <HeaderTemplate>
            <!-- child controls -->
        </HeaderTemplate>
        <ItemTemplate>
            <!-- child controls -->
        </ItemTemplate>
        <SeparatorTemplate>
            <!-- child controls -->
        </SeparatorTemplate>
</asp:Repeater>

설명

Repeater 컨트롤을 사용하면 데이터 바인딩된 기본 템플릿 기반 목록을 만들 수 있습니다. Repeater 컨트롤에는 기본으로 제공되는 레이아웃이나 스타일이 없으므로 컨트롤의 템플릿 내에서 모든 HTML 레이아웃, 서식 및 스타일 태그를 명시적으로 선언해야 합니다.

Repeater 컨트롤을 사용하면 템플릿에 HTML 조각을 추가할 수 있다는 점에서 다른 데이터 목록 컨트롤과 다릅니다. 따라서 표와 같은 복잡한 HTML 구조를 만들 수 있습니다. 예를 들어 HTML 표에 목록을 만들려면 먼저 HeaderTemplate에 <table> 태그를 추가하여 표를 시작합니다. 그런 다음 <tr> 태그, <td> 태그 및 데이터 바인딩된 항목을 ItemTemplate에 추가하여 표의 행과 열을 만듭니다. 표에서 교대로 반복되는 항목에 대해 서로 다른 모양을 지정하려면 ItemTemplate과 내용은 같지만 스타일을 다르게 지정하여AlternatingItemTemplate을 만듭니다. 마지막으로 FooterTemplate에 </table> 태그를 추가하여 표를 완성합니다.

다음 표에서는 Repeater 컨트롤의 다양한 템플릿을 보여 줍니다.

템플릿

설명

AlternatingItemTemplate

ItemTemplate 요소와 비슷하지만 Repeater 컨트롤에서 하나씩 건너뛰어 교대로 반복되는 행에 대해 렌더링됩니다. 이 템플릿의 스타일 속성을 설정하여 AlternatingItemTemplate 요소의 모양을 다르게 지정할 수 있습니다.

FooterTemplate

모든 데이터 바인딩된 행이 렌더링된 후 한 번 렌더링되는 요소입니다. 대개 HeaderTemplate 항목에서 열려 있는 요소를 </table>과 같은 태그를 지정하여 닫는 데 사용합니다.

참고

FooterTemplate에서는 데이터를 바인딩할 수 없습니다.

HeaderTemplate

데이터 바인딩된 행이 렌더링되기 전에 한 번 렌더링되는 요소입니다. 대개 표와 같은 컨테이너 요소를 시작하는 데 사용합니다.

참고

HeaderTemplate 항목에서는 데이터를 바인딩할 수 없습니다.

ItemTemplate

데이터 소스의 각 행에 대해 한 번 렌더링되는 요소입니다. ItemTemplate에 데이터를 표시하려면 하나 이상의 웹 서버 컨트롤을 선언하고 Repeater 컨트롤, 즉 컨테이너 컨트롤의 DataSource에 있는 필드를 평가하도록 데이터 바인딩 식을 설정합니다. 다음 예제에서는 이름이 포함된 필드를 Label 컨트롤에 표시하는 선언 샘플을 보여 줍니다.

First Name:
<asp:Label runat="server"
   Text="<%# Container.DataItem.FirstName %>" />

SeparatorTemplate

대개 줄 바꿈(<br> 태그), 가로줄(<hr> 태그) 등과 같이 각 행 사이에 렌더링되는 요소입니다.

참고

SeparatorTemplate 항목에서는 데이터를 바인딩할 수 없습니다.

Repeater 컨트롤에는 선택 또는 편집 기능이 기본으로 제공되어 있지 않습니다. 컨트롤의 ItemCommand 이벤트에 대한 처리기를 만들어 템플릿에서 컨트롤로 전달되는 컨트롤 이벤트를 처리할 수 있습니다.

컨트롤은 해당 컨트롤의 DataSource 또는 DataSourceID 속성에서 참조되는 데이터 구조에 Item 및 AlternatingItem 템플릿을 바인딩합니다. Header, Footer 및 Separator 템플릿은 데이터에 바인딩할 수 없습니다. Repeater 컨트롤의 DataSource 속성을 설정했지만 데이터가 반환되지 않는 경우, 컨트롤은 항목이 없는 Header 및 Footer 템플릿을 렌더링합니다. DataSource 속성을 설정하지 않으면 Repeater 컨트롤이 렌더링되지 않습니다.

경고

텍스트는 Repeater 컨트롤에 표시된 후에 HTML로 인코딩됩니다. 따라서 텍스트의 HTML 태그 내에 스크립트를 포함시킬 수 있습니다. 컨트롤 값을 사용자 입력에서 가져온 경우 값이 유효한지 확인하여 보안상의 허점을 방지합니다.

Repeater 웹 서버 컨트롤의 속성과 이벤트에 대한 자세한 내용은 Repeater 클래스 설명서를 참조하십시오.

예제

다음 코드 예제에서는 DataSourceID 속성을 사용하여 Repeater 컨트롤에 데이터 소스를 지정하는 방법을 보여 줍니다. DataSourceID 속성은 데이터를 검색하는 데 사용되는 SqlDataSource 컨트롤의 ID 속성으로 설정됩니다. 페이지가 로드되면 SqlDataSource 컨트롤에 지정된 데이터 소스에 Repeater 컨트롤이 자동으로 바인딩되고 사용자에게 데이터가 표시됩니다.

<%@ Page Language="VB" %>

<!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>
    <title>Repeater.DataSourceID Property Example</title>
</head>

  <body>
    <form id="Form1" runat="server">

      <h3>Repeater.DataSourceID Property Example</h3>

      <asp:repeater id="Repeater1"       
        datasourceid="SqlDataSource1"
        runat="server">

        <headertemplate>
          <table border="1">
            <tr>
              <td><b>Product ID</b></td>
              <td><b>Product Name</b></td>
            </tr>
        </headertemplate>

        <itemtemplate>
          <tr>
            <td> <%# Eval("ProductID") %> </td>
            <td> <%# Eval("ProductName") %> </td>
          </tr>
        </itemtemplate>

        <footertemplate>
          </table>

        </footertemplate>
      </asp:repeater>

            <asp:sqldatasource id="SqlDataSource1"          
            connectionstring="<%$ ConnectionStrings:NorthWindConnection%>" 
        selectcommand="SELECT ProductID, ProductName FROM [Products] Where ProductID <= 10"
        runat="server">
      </asp:sqldatasource>

    </form>      
  </body>
</html>
<%@ page language="C#" %>

<!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>
    <title>Repeater.DataSourceID Property Example</title>
</head>

  <body>
    <form id="Form1" runat="server">

      <h3>Repeater.DataSourceID Property Example</h3>

      <asp:repeater id="Repeater1"       
        datasourceid="SqlDataSource1"
        runat="server">

        <headertemplate>
          <table border="1">
            <tr>
              <td><b>Product ID</b></td>
              <td><b>Product Name</b></td>
            </tr>
        </headertemplate>

        <itemtemplate>
          <tr>
            <td> <%# Eval("ProductID") %> </td>
            <td> <%# Eval("ProductName") %> </td>
          </tr>
        </itemtemplate>

        <footertemplate>
          </table>

        </footertemplate>
      </asp:repeater>

            <asp:sqldatasource id="SqlDataSource1"          
            connectionstring="<%$ ConnectionStrings:NorthWindConnection%>" 
        selectcommand="SELECT ProductID, ProductName FROM [Products] Where ProductID <= 10"
        runat="server">
      </asp:sqldatasource>

    </form>      
  </body>
</html>

참고 항목

참조

Repeater

기타 리소스

웹 서버 컨트롤 구문