다음을 통해 공유


FormView 웹 서버 컨트롤 개요

업데이트: 2007년 11월

FormView 컨트롤을 사용하여 한 번에 데이터 소스의 단일 레코드를 표시할 수 있습니다. FormView 컨트롤을 사용할 때는 템플릿을 만들어 데이터 바인딩된 값을 표시 및 편집합니다. 템플릿에는 폼의 모양 및 기능을 정의하는 컨트롤, 바인딩 식 및 서식이 포함됩니다. FormView 컨트롤은 주로 마스터/세부 사항 시나리오에서 GridView 컨트롤과 함께 사용됩니다.

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

  • 배경

  • 코드 예제

  • 클래스 참조

배경

FormView 컨트롤은 DetailsView 컨트롤과 마찬가지로 데이터 소스의 단일 레코드에 대한 작업을 수행하는 데 사용할 수 있습니다. DetailsView 컨트롤에서는 레코드의 각 필드가 고유한 행으로 표시되는 테이블 형식 레이아웃을 사용한다는 점이 FormView 컨트롤과 DetailsView 컨트롤의 차이입니다. 이와 달리 FormView 컨트롤에서는 레코드를 표시하기 위한 미리 정의된 레이아웃을 지정하지 않습니다. 대신 컨트롤이 포함된 템플릿을 만들어 레코드의 개별 필드를 표시합니다. 이 템플릿에는 폼을 만드는 데 사용되는 서식, 컨트롤 및 바인딩 식이 들어 있습니다.

FormView 컨트롤은 대개 새 레코드를 업데이트 및 삽입하는 데 사용됩니다. 또한 선택한 마스터 컨트롤 레코드에 따라 FormView 컨트롤에 표시할 레코드가 결정되는 마스터/세부 시나리오에 주로 사용됩니다. 자세한 내용과 예제는 FormView 웹 서버 컨트롤을 사용하여 데이터 수정을 참조하십시오.

FormView 컨트롤은 데이터 소스 컨트롤의 기능에 의존하여 레코드를 업데이트하고 삽입하고 삭제하는 등의 작업을 수행합니다. FormView 컨트롤은 데이터 소스에서 여러 레코드를 제공하는 경우에도 데이터 레코드를 한 번에 하나만 표시합니다.

FormView 컨트롤은 연결된 데이터 소스의 데이터를 한 번에 레코드 하나씩 자동으로 페이징합니다. 이렇게 하려면 데이터가 ICollection 인터페이스를 구현하는 개체로 표현되거나 내부 데이터 소스에서 페이징을 지원해야 합니다. FormView 컨트롤은 레코드를 탐색하는 데 사용할 수 있는 UI(사용자 인터페이스)를 제공합니다. 페이징 동작을 사용하려면 AllowPaging 속성을 true로 설정하고 PagerTemplate 값을 지정합니다.

FormView 컨트롤에서는 사용자 고유의 코드를 실행하기 위해 처리할 수 있는 몇 가지 이벤트를 노출합니다. 이러한 이벤트는 연결된 데이터 소스 컨트롤의 삽입, 업데이트 및 삭제 작업이 수행되기 전후에 발생합니다. ItemCreatedItemCommand 이벤트에 대한 처리기를 작성할 수도 있습니다. 자세한 내용은 FormView 웹 서버 컨트롤 이벤트를 참조하십시오.

참고:

FormView 컨트롤의 이벤트 모델은 GridView 컨트롤의 이벤트 모델과 비슷합니다. 그러나 FormView 컨트롤에서는 항상 현재 레코드가 선택된 항목이기 때문에 선택 이벤트를 지원하지 않습니다.

FormView 컨트롤을 사용한 데이터 바인딩

FormView 컨트롤에서는 데이터에 바인딩하기 위한 다음 옵션을 제공합니다.

  • DataSourceID 속성을 사용한 데이터 바인딩 - 이 방법을 사용하면 FormView 컨트롤을 데이터 소스 컨트롤에 바인딩할 수 있습니다. 이 방법은 FormView 컨트롤에서 데이터 소스 컨트롤의 기능을 이용하고 업데이트 및 페이징을 위한 기능을 기본적으로 제공할 수 있는 방법이므로 권장됩니다.

  • DataSource 속성을 사용한 데이터 바인딩 - 이 방법을 사용하면 ADO.NET 데이터 집합 및 데이터 판독기를 비롯한 다양한 개체에 바인딩할 수 있습니다. 이 방법을 사용하려면 업데이트 및 페이징 등의 추가 기능을 위한 코드를 작성해야 합니다.

DataSourceID 속성을 사용하여 데이터 소스에 바인딩하는 경우 FormView 컨트롤에서는 양방향 데이터 바인딩을 지원합니다. 즉, 컨트롤에서 데이터를 표시할 수 있을 뿐 아니라 바인딩된 데이터에 대한 삽입, 업데이트 및 삭제 작업도 자동으로 지원할 수 있습니다.

자세한 내용은 데이터 소스 웹 서버 컨트롤을 참조하십시오.

FormView 컨트롤 사용자 인터페이스 만들기

템플릿을 만들어 FormView 컨트롤의 UI(사용자 인터페이스)를 만들 수 있습니다. 각 작업에 서로 다른 템플릿을 지정합니다. 표시, 삽입 및 편집 모드에 사용할 ItemTemplate 템플릿을 만들 수 있습니다. PagerTemplate 템플릿을 사용하면 페이징을 제어할 수 있고 HeaderTemplateFooterTemplate을 사용하면 각각 FormView 컨트롤의 머리글과 바닥글을 사용자 지정할 수 있습니다. 또한 EmptyDataTemplate을 사용하면 데이터 소스에서 데이터가 반환되지 않는 경우 표시할 템플릿을 지정할 수 있습니다. 자세한 내용은 FormView 웹 서버 컨트롤의 템플릿 만들기를 참조하십시오.

FormView 컨트롤에 대해 만드는 항목 템플릿에서는 컨트롤의 내용을 지정합니다. DetailsView 컨트롤과 마찬가지로 FormView 컨트롤에서도 EditRowStyle, EmptyDataRowStyle, FooterStyle, HeaderStyle, InsertRowStyle, PagerStyleRowStyle 속성 등의 스타일 속성을 사용하여 컨트롤의 표시 형식을 사용자 지정할 수 있습니다.

다음 예제에서는 FormView 컨트롤을 사용하여 데이터를 표시하는 ASP.NET 페이지를 보여 줍니다.

<%@ 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>FormView Example</title>
</head>
<body>
    <form id="form1" >
      <h3>FormView Example</h3>
        <table cellspacing="10"> 
          <tr>               
            <td valign="top">

              <asp:FormView ID="ProductsFormView"
                DataSourceID="ProductsSqlDataSource"
                AllowPaging="true"
                >

                <HeaderStyle forecolor="white" backcolor="Blue" />                

                <ItemTemplate>
                  <table>
                    <tr>
                      <td align="right"><b>Product ID:</b></td>
                      <td><asp:Label id="ProductIDLabel"  Text='<%# Eval("ProductID") %>' /></td>
                    </tr>
                    <tr>
                      <td align="right"><b>Product Name:</b></td>
                      <td><asp:Label id="ProductNameLabel"  Text='<%# Eval("ProductName") %>' /></td>
                    </tr>
                    <tr>
                      <td align="right"><b>Category ID:</b></td>
                      <td><asp:Label id="CategoryIDLabel"  Text='<%# Eval("CategoryID") %>' /></td>
                    </tr>
                    <tr>
                      <td align="right"><b>Quantity Per Unit:</b></td>
                      <td><asp:Label id="QuantityPerUnitLabel"  Text='<%# Eval("QuantityPerUnit") %>' /></td>
                    </tr>
                    <tr>
                      <td align="right"><b>Unit Price:</b></td>
                      <td><asp:Label id="UnitPriceLabel"  Text='<%# Eval("UnitPrice") %>' /></td>
                    </tr>
                  </table>                 
                </ItemTemplate>

                <PagerTemplate>
                  <table>
                    <tr>
                      <td><asp:LinkButton ID="FirstButton" CommandName="Page" CommandArgument="First" Text="<<" RunAt="server"/></td>
                      <td><asp:LinkButton ID="PrevButton"  CommandName="Page" CommandArgument="Prev"  Text="<"  RunAt="server"/></td>
                      <td><asp:LinkButton ID="NextButton"  CommandName="Page" CommandArgument="Next"  Text=">"  RunAt="server"/></td>
                      <td><asp:LinkButton ID="LastButton"  CommandName="Page" CommandArgument="Last"  Text=">>" RunAt="server"/></td>
                    </tr>
                  </table>
                </PagerTemplate>

              </asp:FormView>

            </td>
          </tr>
        </table>

        <asp:SqlDataSource ID="ProductsSqlDataSource" 
          SelectCommand="SELECT * FROM [Products]" 
          connectionstring="<%$ ConnectionStrings:NorthwindConnection %>" 
          RunAt="server"/>

      </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>FormView Example</title>
</head>
<body>
    <form id="form1" >
      <h3>FormView Example</h3>
        <table cellspacing="10"> 
          <tr>               
            <td valign="top">

              <asp:FormView ID="ProductsFormView"
                DataSourceID="ProductsSqlDataSource"
                AllowPaging="true"
                >

                <HeaderStyle forecolor="white" backcolor="Blue" />                

                <ItemTemplate>
                  <table>
                    <tr>
                      <td align="right"><b>Product ID:</b></td>
                      <td><asp:Label id="ProductIDLabel"  Text='<%# Eval("ProductID") %>' /></td>
                    </tr>
                    <tr>
                      <td align="right"><b>Product Name:</b></td>
                      <td><asp:Label id="ProductNameLabel"  Text='<%# Eval("ProductName") %>' /></td>
                    </tr>
                    <tr>
                      <td align="right"><b>Category ID:</b></td>
                      <td><asp:Label id="CategoryIDLabel"  Text='<%# Eval("CategoryID") %>' /></td>
                    </tr>
                    <tr>
                      <td align="right"><b>Quantity Per Unit:</b></td>
                      <td><asp:Label id="QuantityPerUnitLabel"  Text='<%# Eval("QuantityPerUnit") %>' /></td>
                    </tr>
                    <tr>
                      <td align="right"><b>Unit Price:</b></td>
                      <td><asp:Label id="UnitPriceLabel"  Text='<%# Eval("UnitPrice") %>' /></td>
                    </tr>
                  </table>                 
                </ItemTemplate>

                <PagerTemplate>
                  <table>
                    <tr>
                      <td><asp:LinkButton ID="FirstButton" CommandName="Page" CommandArgument="First" Text="<<" RunAt="server"/></td>
                      <td><asp:LinkButton ID="PrevButton"  CommandName="Page" CommandArgument="Prev"  Text="<"  RunAt="server"/></td>
                      <td><asp:LinkButton ID="NextButton"  CommandName="Page" CommandArgument="Next"  Text=">"  RunAt="server"/></td>
                      <td><asp:LinkButton ID="LastButton"  CommandName="Page" CommandArgument="Last"  Text=">>" RunAt="server"/></td>
                    </tr>
                  </table>
                </PagerTemplate>

              </asp:FormView>

            </td>
          </tr>
        </table>

        <asp:SqlDataSource ID="ProductsSqlDataSource" 
          SelectCommand="SELECT ProductID, ProductName, CategoryID, QuantityPerUnit, UnitPrice FROM [Products]" 
          connectionstring="<%$ ConnectionStrings:NorthwindConnection %>" 
          RunAt="server"/>

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

맨 위로 이동

코드 예제

FormView 웹 서버 컨트롤의 템플릿 만들기

FormView 웹 서버 컨트롤의 페이징

FormView 웹 서버 컨트롤을 사용하여 데이터 수정

FormView 웹 서버 컨트롤 이벤트

연습: FormView 웹 서버 컨트롤을 사용하여 웹 페이지에 서식 지정된 데이터 표시

맨 위로 이동

클래스 참조

다음 표에서는 FormView 컨트롤과 관련된 주요 클래스를 보여 줍니다.

멤버

설명

FormView

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

맨 위로 이동

참고 항목

개념

ASP.NET 데이터 액세스 개요

ASP.NET 웹 서버 컨트롤 템플릿

기타 리소스

Data 도구 상자 컨트롤