この記事では、Visual Basic .NET を使用して、ASP.NET で DataGrid コントロールの概要行を作成する方法について説明します。
元の製品バージョン: Visual Basic .NET
元の KB 番号: 313154
概要
この記事では、Visual Basic .NET プロジェクトを作成し、Northwind データベースから Sales Totals by Amount という名前のビューにアクセスするコードを追加し、DataGrid に Sales Totals by Amount ビューをバインドします。 このサンプルでは、DataGrid の ItemDataBound イベントを使用して、DataGrid にデータをバインドするときに SaleAmount フィールドを合計します。 また、このサンプルでは、DataGrid のフッターを使用して、概要または合計を表示します。
この記事では、Microsoft .NET Framework クラス ライブラリ名前空間 System.Data.SqlClientについて説明します。
注
この記事の Microsoft Visual C# .NET バージョンについては、 326339を参照してください。
要求事項
次の一覧では、必要な推奨ハードウェア、ソフトウェア、ネットワーク インフラストラクチャ、およびサービス パックの概要を示します。
- Microsoft Windows
- Microsoft .NET Framework
- Microsoft Visual Studio .NET
- Microsoft インターネット インフォメーション サービス (IIS)
- Microsoft SQL Server 7.0 以降と Northwind データベース
注
Northwind データベースは、SQL sServer 7.0 以降に含まれています。
Visual Basic .NET プロジェクトを作成し、DataGrid を追加する
このセクションでは、Visual Basic .NET プロジェクトを作成し、DataGrid の形式を選択し、フッターを表示するように DataGrid を設定します。 フッターを使用して概要を表示するため、フッターを表示することが重要です。
注
既定では、 ShowFooter プロパティはオフになっています。
Visual Studio .NET を起動します。 Visual Studio .NET IDE が表示されます。
[ファイル] メニューの [新規作成] をポイントし、 [プロジェクト] をクリックします。
[新しいプロジェクト] ダイアログ ボックスの [プロジェクトの種類の下にある [Visual Basic Projects] をクリックし、[Templates]\(テンプレート\) の下の [Web アプリケーションASP.NET] をクリックします。
[ 新しいプロジェクト ] ダイアログ ボックスで、[ 名 ] ボックスが使用できないことに注意してください (淡色表示)。 Location ボックスには、次のテキスト (または類似) が含まれています。
http://localhost/WebApplication1場所を
http://localhost/SummaryRowに変更し、[ OK] をクリック。 WebForm1.aspxという名前の Web フォームを含む新しいプロジェクトが作成されます。ソリューション エクスプローラーで、WebForm1.aspxをダブルクリックします。
ツールボックスからフォームに DataGrid コントロールをドラッグします。
DataGrid コントロールを右クリックし、[オート フォーマット] クリック。 [ Colorful 1] をクリックし、[ OK] をクリック。
DataGrid コントロールを右クリックし、Properties をクリックします。 Properties ダイアログ ボックスで、ShowFooter プロパティの値を True に変更します。
データベースにアクセスするためのコードを記述する
このセクションでは、 Northwind データベースにある Sales Totals by Amount ビューを使用して、SaleAmount フィールドの概要を計算します。 [Sales Totals by Amount]\(金額別の売上合計\) ビューには、[受注]、[CompanyName]、[SaleAmount] フィールドが含まれます。
IDE で Web フォームを右クリックし、[コードの表示 ] をクリック。
分離コード ウィンドウで、ページの上部に次のコードを追加します。
Imports System.Data Imports System.Data.SqlClientクラス宣言セクションに次のコードを追加します。
Private myTotal As System.Double 'This variable tracks the running total.Page_Loadイベントのコードを次のコードに置き換えます。Private Sub Page_Load(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles MyBase.Load 'Connect to the database, retrieve data, and then fill the data in the DataSet. Dim myConnection As New SqlConnection("server=(local)\netsdk;"Integrated Security=SSPI" & _ pwd=;database=northwind") Dim myDataAdapter As New SqlDataAdapter("SELECT top 15 [OrderID], [CompanyName], " & _ "[SaleAmount] FROM [Northwind].[dbo].[Sales Totals by Amount]", myConnection) Dim myDataSet As New DataSet() myDataAdapter.Fill(myDataSet) 'Set the DataSource for the DataGrid, and then bind the data. DataGrid1.DataSource = myDataSet DataGrid1.DataBind() End Sub環境に合わせて接続文字列を変更します。
ItemDataBound イベントを使用する
ItemDataBound イベントは、項目が DataGrid コントロールにバインドされたデータの後に発生します。 このイベントは、クライアントに表示される前にデータ項目にアクセスする最後の機会を提供します。 このイベントが発生すると、データ項目は null になり、使用できなくなります。
データバインドされたアイテムごとに、 ItemType プロパティを確認する必要があります。
ItemType
Item型またはAlternatingItem型の場合は、SaleAmount 値を含む項目の最後のセルから値を受け取ります。 このサンプルでは、実行中のサマリー変数にこの値を追加します。
ItemTypeがFooterされると、すべての行から合計を受け取ります。 したがって、サマリー変数の値を最後のセルのテキスト値に割り当てます。
注
このコードでは、書式指定式を使用して、SaleAmount データを一様に検索します。
Page_Load イベントの後に次のコードを追加します。
Private Sub DataGrid1_ItemDataBound(ByVal sender As Object, _
ByVal e As System.Web.UI.WebControls.DataGridItemEventArgs) Handles DataGrid1.ItemDataBound
Select Case e.Item.ItemType
Case ListItemType.AlternatingItem, ListItemType.Item
'Calculate total for the field of each row and alternating row.
myTotal += CDbl(e.Item.Cells(2).Text)
'Format the data, and then align the text of each cell to the right.
e.Item.Cells(2).Text = Format(CDbl(e.Item.Cells(2).Text), "##,##0.00")
e.Item.Cells(2).Attributes.Add("align", "right")
Case ListItemType.Footer
'Use the footer to display the summary row.
e.Item.Cells(1).Text = "Total Sales"
e.Item.Cells(1).Attributes.Add("align", "left")
e.Item.Cells(2).Attributes.Add("align", "right")
e.Item.Cells(2).Text = myTotal.ToString("c")
End Select
End Sub
プロジェクトをビルドしてコードをテストする
- [ファイル] メニューの [すべてを保存] をクリックします。
- [ビルド] メニューの [ソリューションのビルド] をクリックします。
- ソリューション エクスプローラーで、.aspx ページを右クリックし、[ブラウザー] で [表示] をクリック。 .aspx ページがブラウザーに表示され、DataGrid に OrderID、CompanyName、SaleAmount 列が表示されます。 フッターに SaleAmount 列の合計が表示されます。