この記事では、ASP.NET DataGrid コントロールの各行をループ処理する方法と、行の識別に使用 ASP.NET CheckBox サーバー コントロールが選択されているかどうかを確認する方法について説明します。
元の製品バージョン: Visual Basic
元の KB 番号: 321881
概要
この記事のサンプル コードでは、Microsoft SQL Server Northwind データベースを使用して DataGrid コントロールを設定し、各行の最初の列に CheckBox サーバー コントロールを追加します。 これは、ユーザーが DataGrid 内の複数の特定の行を選択できるようにする一般的な手法です。
この記事では、次の .NET Framework クラス ライブラリ名前空間について説明します。
System.Data.SqlClientSystem.Text
Requirements
- ウィンドウズ
- .NET Framework
- インターネット インフォメーション サービス (IIS)
- Visual Studio .NET
Visual Basic .NET を使用して ASP.NET Web アプリケーションを作成する
- Visual Studio .NET を起動します。
- [ファイル] メニューの [新規作成]をポイントし、 [プロジェクト]をクリックします。
- [新しいプロジェクト] ダイアログ ボックスで、[プロジェクトの種類] で [Visual Basic プロジェクト] を選択し、[テンプレート] の下 ASP.NET Web アプリケーションを選択します。
- [ 場所 ] ボックスで、 WebApplication# の既定の名前を MyWebApp に置き換えます。 ローカル サーバーを使用している場合は、サーバー名を
http://localhostのままにすることができます。 結果の [場所 ] ボックスがhttp://localhost/MyWebAppとして表示されます。
サンプル Web フォーム ページを作成する
次のように、ASP.NET Web アプリケーションに新しい Web フォームを追加します。
- ソリューション エクスプローラーでプロジェクト ノードを右クリックし、[ 追加] をポイントし、[ Web フォームの追加] をクリックします。
- [ 名前 ] ボックスに 「MySample.aspx」と入力し、[ 開く] を選択します。
[ プロパティ ] ウィンドウで、ドキュメントの pageLayout プロパティを FlowLayout に変更します。 サンプル コードを使用するためにこれを行う必要はありませんが、これにより、プレゼンテーションがよりクリーンに表示されます。
次のように、DataGrid、Button、および Label サーバー コントロールをページに追加します。
- ASP.NET DataGrid サーバー コントロールを Web フォーム ツールボックスからページにドラッグします。
- [ プロパティ ] ウィンドウで、DataGrid コントロールの ID をDemoGrid に変更します。
- ASP.NET Button サーバー コントロールを Web フォーム ツールボックスから DataGrid の下のページにドラッグします。
- [ プロパティ ] ウィンドウで、Button コントロールの ID をGetSelections に変更し、[ テキスト ] プロパティを [選択範囲の取得] に変更します。
- ASP.NET Label サーバー コントロールを Web フォーム ツールボックスから Button コントロールの下のページにドラッグします。
- [プロパティ] ウィンドウで、Label コントロールの ID をResultsInfo に変更し、Text プロパティ内の任意のテキストを削除します。
エディターで HTML ビューに切り替えます。 既定の DataGrid テンプレートにコードを追加して、列を構築します。 コントロールの結果のコードは次のようになります。
<asp:DataGrid id="DemoGrid" runat="server" DataKeyField="CustomerID"> <Columns> <asp:TemplateColumn HeaderText="Customer"> <ItemTemplate> <asp:CheckBox ID="myCheckbox" Runat="server" /> </ItemTemplate> </asp:TemplateColumn> </Columns> </asp:DataGrid>ページを右クリックし、[ コードの表示] をクリックします。 これにより、コードビハインド クラス ファイルがエディターで開きます。 分離コード クラス ファイルに次の名前空間参照を追加します。
Imports System.Data.SqlClient Imports System.TextPage_Loadイベント ハンドラーの既存のコードを次のコードに置き換えます。Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load If Not IsPostBack Then 'Create a SqlConnection object. 'Modify the connection string as necessary for your environment. Dim cn As SqlConnection = New SqlConnection("Server=localhost;database=Northwind;UID=sa;PWD=") Dim cmd As SqlCommand = New SqlCommand("SELECT * FROM Customers", cn) cn.Open() Dim reader As SqlDataReader = cmd.ExecuteReader() DemoGrid.DataSource = reader DataBind() reader.Close() cn.Close() End If End Subデザイン ビューに切り替え、[ GetSelections] をダブルクリックします。 これにより、コードビハインド クラス ファイルがエディターで開きます。
GetSelections_Clickイベント ハンドラー内の既存のコードを次のコードに置き換えます。Private Sub GetSelections_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles GetSelections.Click Dim rowCount As Integer = 0 Dim gridSelections As StringBuilder = New StringBuilder()'Loop through each DataGridItem, and determine which CheckBox controls 'have been selected. Dim DemoGridItem As DataGridItem For Each DemoGridItem In DemoGrid.Items Dim myCheckbox As CheckBox = CType(DemoGridItem.Cells(0).Controls(1), CheckBox) If myCheckbox.Checked = True Then rowCount += 1 gridSelections.AppendFormat("The checkbox for {0} was selected<br>", _ DemoGrid.DataKeys(DemoGridItem.ItemIndex).ToString()) End If Next gridSelections.Append("<hr>") gridSelections.AppendFormat("Total number selected is: {0}<br>", rowCount.ToString()) ResultsInfo.Text = gridSelections.ToString() End Sub
動作することを確認する
[ ファイル ] メニューの [ すべて保存 ] をクリックして、Web フォームとプロジェクトに関連付けられている他のファイルを保存します。
Visual Studio .NET 統合開発環境 (IDE) の [ ビルド ] メニューで、[ソリューションの ビルド] をクリックします。
ソリューション エクスプローラーで、Web フォーム ページ (MySample.aspx) を右クリックし、[ ブラウザーで表示] をクリックします。 ページにグリッド内のデータが表示されていることに注意してください。 さらに、各行の最初の列にチェック ボックスが表示されます。 ユーザーはこのチェック ボックスをオンにして、特定の行をマークできます。
クリックして行のチェック ボックスをいくつか選択し、[選択項目の 取得] をクリックします。
ページがサーバーへのラウンド トリップを行い、
GetSelections_Clickイベント ハンドラーでコードを実行すると、前の手順で選択した項目の一覧が表示されます。GetSelections_Clickイベント ハンドラーのコードは、ASP.NET DataGrid サーバー コントロール内の各DataGridItemをループ処理し、関連する CheckBox コントロールの Checked プロパティが true かどうかを判断し、関連付けられたキー値を DataGrid のDataKeysの特定の位置に記録します。