다음을 통해 공유


Repeater 웹 서버 컨트롤 개요

업데이트: 2007년 11월

Repeater 웹 서버 컨트롤은 개별 항목의 목록을 만드는 데이터 바인딩된 컨테이너 컨트롤입니다. 템플릿을 사용하여 웹 페이지에서 개별 항목의 레이아웃을 정의합니다. 페이지가 실행될 때 이 컨트롤은 데이터 소스에서 각 항목에 대한 레이아웃을 반복합니다.

이 항목의 내용은 다음과 같습니다.

  • 배경

  • 코드 예제

  • 클래스 참조

배경

Repeater 웹 서버 컨트롤은 페이지에 사용할 수 있는 데이터로 사용자 지정 목록을 만들 수 있는 컨테이너 컨트롤입니다. Repeater 컨트롤에는 렌더링 기능이 기본으로 제공되어 있지 않으므로 템플릿을 만들어 Repeater 컨트롤에 대한 레이아웃을 제공해야 합니다. 페이지가 실행되면 Repeater 컨트롤은 데이터 소스의 레코드를 순환하면서 각 레코드에 대한 항목을 렌더링합니다.

Repeater 컨트롤에는 기본 모양이 없으므로 이 컨트롤을 사용하여 다음을 포함한 다양한 유형의 목록을 만들 수 있습니다.

  • 표 레이아웃

  • 쉼표로 구분된 목록(예: a, b, c, d 등)

  • XML 형식 목록

Repeater 컨트롤에 템플릿 사용

Repeater 컨트롤을 사용하려면 컨트롤 내용의 레이아웃을 정의하는 템플릿을 만들어야 합니다. 태그와 컨트롤을 원하는 대로 조합하여 템플릿에 포함할 수 있습니다. 템플릿이 정의되어 있지 않거나 템플릿에 요소가 포함되어 있지 않으면 응용 프로그램을 실행할 때 컨트롤이 페이지에 나타나지 않습니다.

다음 표에서는 Repeater 컨트롤에서 지원하는 템플릿을 설명합니다.

템플릿 속성

설명

ItemTemplate

데이터 소스의 각 데이터 항목에 대해 한 번 렌더링할 HTML 요소 및 컨트롤을 포함합니다.

AlternatingItemTemplate

데이터 소스의 데이터 항목을 하나씩 걸러서 모든 항목을 렌더링할 HTML 요소 및 컨트롤을 포함합니다. 일반적으로 이 템플릿은 ItemTemplate에 지정된 색과 다른 배경색을 지정하는 경우처럼 대체 항목에 대해 다른 모양을 만드는 데 사용됩니다.

HeaderTemplateFooterTemplate

목록의 처음과 끝에서 각각 렌더링하는 텍스트와 컨트롤을 포함합니다.

SeparatorTemplate

각 항목 사이에서 렌더링하는 요소를 포함합니다. hr 요소를 사용하는 선을 예로 들 수 있습니다.

자세한 내용은 ASP.NET 웹 서버 컨트롤 템플릿을 참조하십시오.

Repeater 컨트롤에 데이터 바인딩

Repeater 컨트롤은 데이터 소스에 바인딩되어야 합니다. 가장 일반적인 데이터 소스는 SqlDataSource 또는 ObjectDataSource 컨트롤 같은 데이터 소스 컨트롤입니다. 또는 IEnumerable 인터페이스를 구현하는 클래스에 Repeater 컨트롤을 바인딩할 수도 있습니다. 이 클래스에는 ADO.NET 데이터 집합(DataSet 클래스), 데이터 판독기(SqlDataReader 또는 OleDbDataReader 클래스) 또는 대부분의 컬렉션이 포함됩니다.

데이터를 바인딩할 때는 Repeater 컨트롤 전체에 대한 데이터 소스를 지정합니다. Repeater 컨트롤에 컨트롤을 추가하는 경우, 예를 들어 템플릿에서 Label 또는 TextBox 컨트롤을 추가할 경우에는 데이터 바인딩 구문을 사용하여 각 컨트롤을 데이터 소스에서 반환된 항목의 필드에 바인딩합니다. 다음 예제에서는 데이터 바인딩된 Label 컨트롤이 포함된 ItemTemplate을 보여 줍니다.

<%@ 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 id="Head1" >
  <title>ASP.NET Repeater Example</title>
</head>
<body>
  <form id="form1" >
    <div>
      <asp:Repeater ID="Repeater1"  DataSourceID="SqlDataSource1">
        <HeaderTemplate>
          <table>
            <tr>
              <th>
                Name</th>
              <th>
                Description</th>
            </tr>
        </HeaderTemplate>
        <ItemTemplate>
          <tr>
            <td style="background-color:#CCFFCC">
              <asp:Label  ID="Label1" Text='<%# Eval("CategoryName") %>' />
            </td>
            <td style="background-color:#CCFFCC">
              <asp:Label  ID="Label2" Text='<%# Eval("Description") %>' />
            </td>
          </tr>
        </ItemTemplate>
        <AlternatingItemTemplate>
          <tr>
            <td>
              <asp:Label  ID="Label3" Text='<%# Eval("CategoryName") %>' />
            </td>
            <td>
              <asp:Label  ID="Label4" Text='<%# Eval("Description") %>' />
            </td>
          </tr>
        </AlternatingItemTemplate>
        <FooterTemplate>
          </table>
        </FooterTemplate>
      </asp:Repeater>
      <asp:SqlDataSource ConnectionString="<%$ ConnectionStrings:NorthwindConnectionString %>"
        ID="SqlDataSource1"  SelectCommand="SELECT [CategoryID], [CategoryName], 
            [Description] FROM [Categories]"></asp:SqlDataSource>
    </div>
  </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 id="Head1" >
  <title>ASP.NET Repeater Example</title>
</head>
<body>
  <form id="form1" >
    <div>
      <asp:Repeater ID="Repeater1"  DataSourceID="SqlDataSource1">
        <HeaderTemplate>
          <table>
            <tr>
              <th>
                Name</th>
              <th>
                Description</th>
            </tr>
        </HeaderTemplate>
        <ItemTemplate>
          <tr>
            <td style="background-color:#CCFFCC">
              <asp:Label  ID="Label1" Text='<%# Eval("CategoryName") %>' />
            </td>
            <td style="background-color:#CCFFCC">
              <asp:Label  ID="Label2" Text='<%# Eval("Description") %>' />
            </td>
          </tr>
        </ItemTemplate>
        <AlternatingItemTemplate>
          <tr>
            <td>
              <asp:Label  ID="Label3" Text='<%# Eval("CategoryName") %>' />
            </td>
            <td>
              <asp:Label  ID="Label4" Text='<%# Eval("Description") %>' />
            </td>
          </tr>
        </AlternatingItemTemplate>
        <FooterTemplate>
          </table>
        </FooterTemplate>
      </asp:Repeater>
      <asp:SqlDataSource ConnectionString="<%$ ConnectionStrings:NorthwindConnectionString %>"
        ID="SqlDataSource1"  SelectCommand="SELECT [CategoryID], [CategoryName], 
              [Description] FROM [Categories]"></asp:SqlDataSource>
    </div>
  </form>
</body>
</html>
참고:

Eval 데이터 바인딩 함수를 사용하여 머리글, 바닥글 및 구분 기호 템플릿의 컨트롤을 바인딩할 수 없습니다. 이러한 템플릿에 컨트롤이 있는 경우에는 컨트롤 속성만 정적으로 정의할 수 있습니다.

웹 서버 컨트롤의 데이터 바인딩에 대한 간략한 설명을 보려면 연습: 웹 페이지의 기본 데이터 액세스방법: Web Forms 페이지에 Repeater 웹 서버 컨트롤 추가를 참조하십시오.

Repeater 컨트롤에서 지원하는 이벤트

Repeater 컨트롤은 여러 가지 이벤트를 지원합니다. 이러한 이벤트 중 ItemCreated 이벤트를 사용하면 런타임에 항목 생성 프로세스를 사용자 지정할 수 있습니다. ItemDataBound 이벤트도 Repeater 컨트롤을 사용자 지정하는 기능을 제공하지만 이 기능은 데이터를 검사할 수 있게 된 후에만 사용할 수 있습니다. 예를 들어, Repeater 컨트롤을 사용하여 작업 목록을 표시하는 경우 완료되지 않은 항목은 빨강 텍스트로, 완료된 항목은 검정 텍스트로, 기타 작업은 녹색 텍스트로 표시할 수 있습니다. 두 이벤트 모두 템플릿 정의에 있는 서식을 재정의하는 데 사용할 수 있습니다.

ItemCommand 이벤트는 개별 항목에서 단추를 클릭할 때 발생합니다. 이 이벤트는 Button, LinkButton 또는 ImageButton 웹 서버 컨트롤을 항목 템플릿에 포함한 다음, 단추를 클릭하면 이를 알릴 수 있도록 되어 있습니다. 사용자가 단추를 클릭하면 단추의 컨테이너 컨트롤인 Repeater 컨트롤에 이벤트가 전달됩니다. ItemCommand 이벤트는 Repeater 컨트롤에 대한 업데이트 및 삭제 동작을 프로그래밍하는 데 가장 일반적으로 사용됩니다. 단추를 클릭할 때마다 같은 ItemCommand 이벤트가 발생하므로 각 단추의 CommandName 속성을 고유한 문자열 값으로 설정하면 어떤 단추를 클릭했는지 확인할 수 있습니다. RepeaterCommandEventArgs 매개 변수의 CommandSource 속성에는 클릭한 단추의 CommandName 속성이 포함되어 있습니다.

자세한 내용은 방법: DataList 또는 Repeater 항목에서 단추 이벤트에 대한 응답을 참조하십시오.

맨 위로 이동

코드 예제

방법: Web Forms 페이지에 Repeater 웹 서버 컨트롤 추가

맨 위로 이동

클래스 참조

다음 표에서는 Repeater 컨트롤과 관련된 핵심 클래스를 보여 줍니다.

멤버

설명

Repeater

컨트롤의 기본 클래스입니다.

맨 위로 이동

참고 항목

참조

DataList 웹 서버 컨트롤 개요