次の方法で共有


FormView Web サーバー コントロールの概要

更新 : 2007 年 11 月

FormView コントロールは、データ ソースから一度に 1 つのレコードを表示する場合に使用します。FormView コントロールを使用する場合、表示するテンプレートを作成し、データ バインド値を編集します。テンプレートには、フォームの外観と機能を定義するコントロール、バインディング式、および書式設定が含まれます。FormView コントロールは、多くの場合マスター/詳細シナリオの GridView コントロールと組み合わせて使用します。

このトピックの内容は次のとおりです。

  • 背景

  • コード例

  • クラス リファレンス

背景

FormView コントロールを使用すると、DetailsView コントロールと同様に、データ ソースから取得した単一のレコードを操作できます。FormView コントロールと DetailsView コントロールとの違いは、DetailsView コントロールがレコードの各フィールドがそれ自体の行として表示される表形式レイアウトを使用するという点です。一方、FormView コントロールはレコードの表示に定義済みのレイアウトを指定しません。代わりに、コントロールを含むテンプレートを作成してレコードの各フィールドを表示してください。テンプレートは、フォームの作成に使用される書式、コントロール、およびバインディング式を含みます。

FormView コントロールは、通常、新しいレコードを更新および挿入するために使用されます。このコントロールは、マスタ コントロールの選択したレコードにより FormView コントロールに表示されるレコードが決定するマスタ/詳細シナリオで多く使用されます。使用例を含む詳細については、「FormView Web サーバー コントロールを使用したデータの変更」を参照してください。

FormView コントロールは、データ ソース コントロールの機能に依存してレコードの更新、挿入、削除などのタスクを実行します。FormView コントロールは、そのデータ ソースが複数のレコードを公開している場合でも一度にデータ レコードを 1 つだけ表示します。

FormView コントロールは、その関連付けられているデータ ソース内のデータに対して、一度に 1 つのレコードを自動的にページ付けできます。このためには、ICollection インターフェイスを実装するオブジェクトによりデータが表されていること、または基になっているデータ ソースがページングをサポートしていることが必要です。FormView コントロールには、レコード間を移動するためのユーザー インターフェイス (UI) が用意されています。ページング動作を有効にするには、AllowPaging プロパティを true に設定し、PagerTemplate 値を指定します。

FormView コントロールは、固有のコードを実行するために処理できるいくつかのイベントを公開します。イベントは、関連付けられているデータ ソース コントロールの挿入、更新、および削除操作の前後で発生します。また、ItemCreated イベントと ItemCommand イベントのハンドラを記述することもできます。詳細については、「FormView Web サーバー コントロールのイベント」を参照してください。

ms227992.alert_note(ja-jp,VS.90).gifメモ :

FormView コントロールのイベント モデルは、GridView コントロールのイベント モデルに似ています。ただし、FormView コントロールは選択イベントをサポートしていません。これは現在のレコードが常に選択されている項目であるためです。

FormView コントロールを使用したデータ バインディング

FormView コントロールには、データ バインディングのために次のオプションが用意されています。

  • DataSourceID プロパティを使用したデータ バインディング。これによって、FormView コントロールをデータ ソース コントロールにバインドできます。FormView コントロールはデータ ソース コントロールの機能を利用して、更新とページングのための組み込み機能を提供できるため、この方法をお勧めします。

  • DataSource プロパティを使用したデータ バインディング。これによって、ADO.NET データセットやデータ リーダーを含むさまざまなオブジェクトにデータをバインドできます。この方法では、更新やページングなどの追加機能のためのコードを記述する必要があります。

DataSourceID プロパティを使用してデータ ソースにバインドする場合、FormView コントロールは双方向のデータ バインディングをサポートします。データを表示するコントロール以外に、バインドされたデータの挿入、更新および削除操作を自動的にサポートするコントロールを有効にできます。

詳細については、「データ ソース Web サーバー コントロール」を参照してください。

FormView コントロールのユーザー インターフェイスの作成

FormView コントロールのユーザー インターフェイス (UI) を作成するには、テンプレートを作成します。アクションごとに異なるテンプレートを指定します。表示、挿入、および編集モードには ItemTemplate テンプレートを作成します。PagerTemplate テンプレートを使用してページングを制御できます。HeaderTemplateFooterTemplate を使用して、それぞれ FormView コントロールのヘッダーとフッターをカスタマイズできます。EmptyDataTemplate を使用すると、データ ソースがデータを返さない場合に表示するテンプレートを指定することもできます。詳細については、「FormView Web サーバー コントロールのテンプレートの作成」を参照してください。

FormView コントロール用に作成する項目テンプレートでは、コントロールのコンテンツが指定されます。DetailsView コントロールと同様に、EditRowStyleEmptyDataRowStyleFooterStyleHeaderStyleInsertRowStylePagerStyleRowStyle プロパティなどのスタイル プロパティを使用することで、FormView コントロールの表示形式をカスタマイズすることもできます。

データの表示に 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 runat="server">
    <title>FormView Example</title>
</head>
<body>
    <form id="form1" runat="server">
      <h3>FormView Example</h3>
        <table cellspacing="10"> 
          <tr>               
            <td valign="top">

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

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

                <ItemTemplate>
                  <table>
                    <tr>
                      <td align="right"><b>Product ID:</b></td>
                      <td><asp:Label id="ProductIDLabel" runat="server" Text='<%# Eval("ProductID") %>' /></td>
                    </tr>
                    <tr>
                      <td align="right"><b>Product Name:</b></td>
                      <td><asp:Label id="ProductNameLabel" runat="server" Text='<%# Eval("ProductName") %>' /></td>
                    </tr>
                    <tr>
                      <td align="right"><b>Category ID:</b></td>
                      <td><asp:Label id="CategoryIDLabel" runat="server" Text='<%# Eval("CategoryID") %>' /></td>
                    </tr>
                    <tr>
                      <td align="right"><b>Quantity Per Unit:</b></td>
                      <td><asp:Label id="QuantityPerUnitLabel" runat="server" Text='<%# Eval("QuantityPerUnit") %>' /></td>
                    </tr>
                    <tr>
                      <td align="right"><b>Unit Price:</b></td>
                      <td><asp:Label id="UnitPriceLabel" runat="server" 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 runat="server">
    <title>FormView Example</title>
</head>
<body>
    <form id="form1" runat="server">
      <h3>FormView Example</h3>
        <table cellspacing="10"> 
          <tr>               
            <td valign="top">

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

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

                <ItemTemplate>
                  <table>
                    <tr>
                      <td align="right"><b>Product ID:</b></td>
                      <td><asp:Label id="ProductIDLabel" runat="server" Text='<%# Eval("ProductID") %>' /></td>
                    </tr>
                    <tr>
                      <td align="right"><b>Product Name:</b></td>
                      <td><asp:Label id="ProductNameLabel" runat="server" Text='<%# Eval("ProductName") %>' /></td>
                    </tr>
                    <tr>
                      <td align="right"><b>Category ID:</b></td>
                      <td><asp:Label id="CategoryIDLabel" runat="server" Text='<%# Eval("CategoryID") %>' /></td>
                    </tr>
                    <tr>
                      <td align="right"><b>Quantity Per Unit:</b></td>
                      <td><asp:Label id="QuantityPerUnitLabel" runat="server" Text='<%# Eval("QuantityPerUnit") %>' /></td>
                    </tr>
                    <tr>
                      <td align="right"><b>Unit Price:</b></td>
                      <td><asp:Label id="UnitPriceLabel" runat="server" 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 Web サーバー コントロールのテンプレートの作成

FormView Web サーバー コントロールでのページング

FormView Web サーバー コントロールを使用したデータの変更

FormView Web サーバー コントロールのイベント

チュートリアル : FormView Web サーバー コントロールによる Web ページでの書式設定したデータの表示

ページのトップへ

クラス リファレンス

FormView コントロールに関連する主要なクラスの一覧を次の表に示します。

メンバ

説明

FormView

コントロールのメイン クラスです。

ページのトップへ

参照

概念

ASP.NET データ アクセスの概要

ASP.NET Web サーバー コントロール テンプレート

その他の技術情報

データ ツールボックス コントロール