Visual Basic .NET を使用して ASP.NET で DataGrid の集計行を作成する方法
この詳細な記事では、Visual Basic .NET を使用して、ASP.NET で DataGrid コントロールの集計行を作成する方法について説明します。
元の製品バージョン: Visual Basic .NET
元の KB 番号: 313154
概要
この記事では、Visual Basic .NET プロジェクトを作成し、Northwind データベースから Sales Totals by Amount という名前のビューにアクセスするコードを追加し、売上合計ビューを DataGrid にバインドします。 このサンプルでは、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 プロジェクト] をクリックし、[テンプレート] の下にある [ASP.NET Web アプリケーション] をクリックします。
[ 新しいプロジェクト ] ダイアログ ボックスで、[ 名前 ] ボックスが使用できないことに注意してください (淡色表示)。 [ 場所 ] ボックスには、次のテキスト (または同様のもの) が含まれています。
http://localhost/WebApplication1
場所を に
http://localhost/SummaryRow
変更し、[OK] をクリック します。 新しいプロジェクトが作成されます。これには、 WebForm1.aspxという名前の Web フォームが含まれます。ソリューション エクスプローラーで、[WebForm1.aspx] をダブルクリックします。
ツールボックスからフォームに DataGrid コントロールをドラッグします。
DataGrid コントロールを右クリックし、[ 自動書式] をクリックします。 [ カラフル 1] をクリックし、[ OK] をクリックします。
DataGrid コントロールを右クリックし、[プロパティ] をクリックします。 [ プロパティ ] ダイアログ ボックスで、 ShowFooter プロパティの値を True に変更 します。
データベースにアクセスするためのコードを記述する
このセクションでは、 Northwind データベースにある Sales Totals by Amount ビューを使用して、SaleAmount フィールドの概要を計算します。 [金額別の売上合計] ビューには、[受注]、[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
必要があります。 が 型Item
または AlternatingItem
の場合ItemType
は、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 列の合計が表示されます。
関連情報
フィードバック
https://aka.ms/ContentUserFeedback」を参照してください。
以下は間もなく提供いたします。2024 年を通じて、コンテンツのフィードバック メカニズムとして GitHub の issue を段階的に廃止し、新しいフィードバック システムに置き換えます。 詳細については、「フィードバックの送信と表示