次の方法で共有


チュートリアル : LinqDataSource コントロールと DetailsView コントロールを使用したデータの取得、更新、挿入、および削除

更新 : 2007 年 11 月

このチュートリアルでは、単純なデータベース テーブルと、LinqDataSource コントロールを使用する Web ページを作成します。この Web ページを使用すると、ユーザーはデータベース テーブルからデータを取得、更新、挿入、および削除できます。データを表示するには、DetailsView コントロールを使用します。LinqDataSource コントロールを使用すると、SELECT、UPDATE、INSERT、または DELETE の各ステートメントを記述しなくても、これらの操作をすべて実行できます。

値を含むデータベース テーブルを表すクラスを作成するには、オブジェクト リレーショナル デザイナを使用します。LinqDataSource コントロールはこの生成されたクラスと対話して、データを取得、更新、挿入、および削除します。

前提条件

独自の開発環境でこの手順を実装するための要件は次のとおりです。

  • Visual Studio 2008 またはVisual Web Developer Express Edition

  • 使用するコンピュータにインストールされた SQL Server Express Edition。SQL Server をインストールした場合、代わりに使用することもできますが、いくつかの手順を微調整する必要があります。

  • ASP.NET Web サイト。

データベース テーブルの作成

このチュートリアルの手順を実行するには、データベース テーブルが必要です。テーブルがない場合は、次の手順を実行してテーブルを作成します。既存のテーブルを使用する場合、一部の手順は使用するデータベースと完全に一致しません。ただし、チュートリアルで説明する概念は同じになります。

データベース テーブルを作成するには

  1. Web サイトに App_Data フォルダがない場合は、ソリューション エクスプローラでプロジェクトを右クリックし、[ASP.NET フォルダの追加] をクリックして、[App_Data] をクリックします。

  2. App_Data フォルダを右クリックし、[新しい項目の追加] をクリックします。

  3. [インストールされているテンプレート] で、[SQL データベース] を選択し、ファイル名を Reviews.mdf に変更して [追加] をクリックします。

    Reviews.mdf という名前の SQL データベース項目の追加

  4. サーバー エクスプローラで、Reviews.mdf ノードを開き、テーブル フォルダを右クリックします。

  5. [新しいテーブルの追加] をクリックします。

  6. テーブルに次の列を作成します。

    列名

    データ型

    プロパティ

    MovieID

    int

    IsIdentity = Yes

    null 以外

    主キー

    Title

    nvarchar(50)

    Theater

    nvarchar(50)

    Review

    nvarchar(1000)

    Score

    int

    null 以外

    データベース テーブルの作成

  7. 作成したテーブルを MovieReviews という名前で保存します。

  8. サンプル データを使用して MovieReviews テーブルにレコードを追加します。

    サーバー エクスプローラで、MovieReviews テーブルを右クリックし、[テーブル データの表示] をクリックします。MovieID の値はデータベースによって生成されるため、値を指定する必要はありません。

データベース エンティティを表すクラスの作成

LinqDataSource コントロールを操作するには、データベース エンティティを表すクラスを使用します。Visual Studio 2008 または Visual Web Developer Express Edition のツールを使用して、これらのクラスを作成できます。

MovieReviews テーブルのクラスを作成するには

  1. Web サイトに App_Code フォルダがない場合は、ソリューション エクスプローラでプロジェクトを右クリックし、[ASP.NET フォルダの追加] をクリックして、[App_Code] をクリックします。

  2. App_Code フォルダを右クリックし、[新しい項目の追加] をクリックします。

  3. [インストールされているテンプレート] で、[LINQ to SQL クラス] テンプレートを選択し、ファイル名を Reviews.dbml に変更して [追加] をクリックします。

    Reviews.dbml という名前の LINQ to SQL 項目の追加

    [オブジェクト リレーショナル デザイナ] が表示されます。

  4. サーバー エクスプローラで、MovieReviews テーブルを [オブジェクト リレーショナル デザイナ] ウィンドウへドラッグします。

    MovieReviews テーブルとその列が、デザイナ ウィンドウに MovieReview という名前のエンティティとして表されます。

    オブジェクト リレーショナル デザイナ内の新規テーブルの確認

  5. Reviews.dbml ファイルを保存します。

  6. ソリューション エクスプローラで、Reviews.designer.cs ファイルまたは Reviews.designer.vb ファイルを開きます。

    ReviewsDataContext と MovieReview のクラスがあることを確認します。ReviewsDataContext クラスはデータベースを表し、MovieReview クラスはデータベース テーブルを表します。ReviewsDataContext クラスのパラメータなしのコンストラクタは、Web.config ファイルから接続文字列を読み取ります。

  7. Web.config ファイルを開きます。

    connectionStrings 要素に接続文字列が追加されていることを確認します。

  8. クラス ファイルと Web.config ファイルを閉じます。

LinqDataSource コントロールの作成および構成

データベース テーブル、およびデータベース エンティティを表すクラスを作成したので、ASP.NET Web ページで LinqDataSource コントロールを使用してデータを管理します。

LinqDataSource コントロールを作成して構成するには

  1. Visual Studio で、新しい ASP.NET Web ページを作成し、デザイン ビューに切り替えます。

  2. ツールボックスの [データ] タブで、LinqDataSource コントロールをドラッグして Web ページ上の form 要素内にドロップします。

    ID プロパティは LinqDataSource1 のままにしておくことができます。

    [デザイン] ウィンドウへの LinqDataSource コントロールの追加

  3. ContextTypeName プロパティを ReviewsDataContext に設定します。

  4. TableName プロパティを MovieReviews に設定します。

  5. AutoPage を true に設定し、ソース ビューに切り替えます。

    LinqDataSource コントロールの宣言マークアップの例を次に示します。

    <asp:LinqDataSource 
      ContextTypeName="ReviewsDataContext" 
      TableName="MovieReviews" 
      AutoPage="true" 
      ID="LinqDataSource1" 
      runat="server">
    </asp:LinqDataSource>
    

    データを選択するためにデータベース コマンドを指定する必要はありません。

データを表示するコントロールの追加

これで、DetailsView コントロールを追加し、LinqDataSource コントロールにバインドできるようになりました。DetailsView コントロールを使用すると、LinqDataSource コントロールによって管理されるデータを表示できます。

LinqDataSource から DetailsView にデータを接続するには

  1. ツールボックスの [データ] タブで、DetailsView コントロールをダブルクリックしてページに追加します。

    ID プロパティは DetailsView1 のままにしておくことができます。

  2. DataSourceID プロパティを LinqDataSource1 に設定します。

  3. DataKeyNames プロパティを MovieID に設定します。

  4. AllowPaging を true に設定します。

    DetailsView コントロールの宣言マークアップの例を次に示します。

    <asp:DetailsView 
      DataSourceID="LinqDataSource1" 
      DataKeyNames="MovieID" 
      AllowPaging="true" 
      ID="DetailsView1" 
      runat="server">
    </asp:DetailsView>
    
  5. 変更内容を保存し、Ctrl キーを押しながら F5 キーを押して、ブラウザでページを表示します。

    DetailsView コントロールには、MovieReviews テーブルの現在のレコードの値が表示されます。DetailsView コントロールにより、データベース テーブルの各列を表示する Web コントロールが自動的に作成されます。

ユーザーによるデータの更新、挿入、および削除の有効化

LinqDataSource コントロールは、データの更新、挿入、および削除を行うためのコマンドを作成できます。

更新、挿入、および削除の各操作を有効にするには

  1. EnableDelete コントロールで、LinqDataSourceEnableUpdate、および EnableInsert の各プロパティを true に設定します。

    LinqDataSource コントロールの宣言マークアップの例を次に示します。

    <asp:LinqDataSource 
      ContextTypeName="ReviewsDataContext" 
      TableName="MovieReviews" 
      AutoPage="true" 
      EnableUpdate="true" 
      EnableInsert="true" 
      EnableDelete="true" 
      ID="LinqDataSource1" 
      runat="server">
    </asp:LinqDataSource>
    
  2. AutoGenerateDeleteButton コントロールで、DetailsViewAutoGenerateEditButton、および AutoGenerateInsertButton の各プロパティを true に設定します。

  3. DetailsView コントロールに表示されるフィールドを制限し、フィールドの順序を設定するには、AutoGenerateRows プロパティを false に設定します。

  4. Title、Theater、Rating、および Review の各列のフィールドを追加し、対応するデータ フィールドにバインドします。

    DetailsView コントロールの宣言マークアップの例を次に示します。

    <asp:DetailsView 
      DataSourceID="LinqDataSource1" 
      DataKeyNames="MovieID" 
      AutoGenerateRows="false" 
      AutoGenerateEditButton="true"
      AutoGenerateInsertButton="true"
      AutoGenerateDeleteButton="true"
      AllowPaging="true" 
      ID="DetailsView1" 
      runat="server">
      <Fields>
        <asp:BoundField HeaderText="Title" DataField="Title" />
        <asp:BoundField HeaderText="Theater" DataField="Theater" />
        <asp:BoundField HeaderText="Number of Stars" DataField="Score" />
        <asp:BoundField HeaderText="Review" DataField="Review" />
      </Fields>
    </asp:DetailsView>
    

    MovieID 列は、他の列と共にデータ ソースから選択されます。ただし、DetailsView コントロールには表示されないため、ユーザーはその値を変更することはできません。LinqDataSource コントロールがデータの更新、挿入、および削除を行うためのコマンドを自動的に作成できるようにするには、MovieID プロパティを選択する必要があります。

    これらのデータ操作のコマンドを指定する必要はありません。

  5. 変更内容を保存し、Ctrl キーを押しながら F5 キーを押して、ブラウザでページを表示します。

    DetailsView コントロールに、MovieReviews テーブルの現在のレコードのフィールドが表示されます。DetailsView コントロールの対応するボタンをクリックすると、レコードを更新、挿入、および削除できます。

次の手順

このチュートリアルでは、LinqDataSource コントロールを使用してレコードの更新、挿入、および削除を行う基本機能について説明しました。LinqDataSource コントロールのその他の機能を調べるために、次の操作を行うことができます。

参照

概念

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