ASP.NET GridViewのホームへ戻る

GridViewに削除機能を追加する (GridView05.aspx)

 

GridViewSQL Serverのテーブルを表示してレコードを削除するサンプルを作成します。このサンプルでは、以下のノウハウを習得することができます。

 

  GridViewに削除ボタンを表示する方法

  SqlDataSourceにレコードを削除するSQLステートメントを格納する方法

 

 

GridViewから得意先ID(55)[削除]ボタンをクリック

 

GridViewから得意先ID(55)が削除された

 

図 GridViewからレコードを削除  

 

1. 新規Webページ作成

 

ソリューションエクスプローラのプロジェクトの右クリックから[新しい項目の追加]を選択して、新規Webページ「GridView05.aspx」を作成します。

 

2. コントロール作成

 

デザイナにGridView05.aspxが表示されたら、ツールボックスの「データ」タブから[GridView]をドラッグ&ドロップします。デザイナにGridView1のオブジェクトが作成されます。「GridViewタスク」メニューから[オートフォーマット]を選択したら、「オートフォーマット」ダイアログの「スキームの選択」から[砂と空]を選択して[OK]をクリックします。「GridViewタスク」メニューの「データソースの選択」から[<新しいデータソース>]を選択して、データソースの構成ウィザードを起動します。App_Dataフォルダに格納されているNwindSQL.mdfを接続してウィザードを続行します。「Selectステートメントの構成」が表示されたらCustomersテーブルからCustomerIDComanyNameContactNamePhoneFax列を選択します。右側から[詳細設定]のボタンをクリックします。

 

SQL生成の詳細オプション」が表示されたら、「INSERTUPDATE、およびDELETEステートメントの生成」をチェックして[OK]をクリックします。

 

 

Selectステートメントの構成」に戻ったら、[次へ]のボタンをクリックしてウィザードを完了させます。デザイナの「GridViewタスク」メニューから「ページングを有効にする」と「削除を有効にする」をチェックします。「GridViewタスク」メニューから[列の編集]を選択します。「フィールド」ダイアログが表示されたら、「選択されたフィールド」から[削除]を選択して、CommandFieldプロパティからButtonTypeプロパティに[Button]を設定します。BoundFieldプロパティのHeaderTextを日本語に書き換えたら[OK]をクリックして閉じます。

 

 

図 [削除]ボタンのButtonTypeプロパティに「Button」を設定

 

デザイナのGridView[削除]ボタンが表示されます。

 

図 デザイナのGridView[削除]ボタンが表示された

 

3. ブラウザに表示

 

VWD 2005のツールバーから[デバッグの開始]ボタンをクリックしてブラウザに表示します。ブラウザが起動されて、GridViewCustomersテーブルが表示されます。GridViewから得意先ID(53)[削除]ボタンをクリックしてCustomersテーブルからレコードが削除されます。GridViewにはCustomersテーブルが再表示されます。

 

 

図 GridViewから[削除]ボタンをクリックしてレコードを削除

 

 

◆解説

 

GridViewに削除機能を追加するには、データソース構成ウィザードの「Selectステートメントの構成」が表示されたとき、[詳細設定]ボタンをクリックしてINSERTUPDATEDELETE用のステートメントを追加します。ウィザードで追加したSQLステートメントは、SqlDataSourceDeleteCommandプロパティに格納されます。

 

<asp:SqlDataSource ID="SqlDataSource1" runat="server"

  ConnectionString="<%$ ConnectionStrings:NwindSQLConnectionString %>"

  DeleteCommand="DELETE FROM [Customers] WHERE [CustomerID] = @original_CustomerID"

  SelectCommand="SELECT [CustomerID], [CompanyName], [ContactName], [Phone], [Fax] FROM [Customers]"

  ・・・>

</asp:SqlDataSource>

 

SqlDataSourceINSERTUPDATEDELETEのステートメントが追加されると、「GridViewタスク」メニューに「削除を有効にする」が表示されますのでチェックボックスをクリックしてチェックマークを付けます。これでGridView[削除]ボタンが追加されます。

 

<asp:GridView ID="GridView1" runat="server"

  AllowPaging="True" AutoGenerateColumns="False" ・・・>

  ・・・

  <Columns>

    <asp:CommandField ButtonType="Button" ShowDeleteButton="True" />

    <asp:BoundField DataField="CustomerID"

      HeaderText="ID" InsertVisible="False" ReadOnly="True"

      SortExpression="CustomerID" />

  ・・・

  </Columns>

  ・・・

</asp:GridView>

 

[削除]ボタンをクリックすると、SqlDataSourceDeleteCommandプロパティに格納されているDETELEステートメントが実行されてCustoemrsテーブルからレコードが削除されます。WHERE句のパラメータ変数@original_CustomerIDには、レコード削除前の得意先IDが代入されます。

 

DELETE FROM [Customers]

WHERE [CustomerID] = @original_CustomerID

 

ASP.NET GridViewのホームへ戻る