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 プロパティはオフになっています。

  1. Visual Studio .NET を起動します。 Visual Studio .NET IDE が表示されます。

  2. [ ファイル] メニューの [ 新規] をポイントし、[ プロジェクト] をクリックします。

  3. [新しいプロジェクト] ダイアログ ボックスの [プロジェクトの種類] の下の [Visual Basic プロジェクト] をクリックし、[テンプレート] の下にある [ASP.NET Web アプリケーション] をクリックします。

  4. [ 新しいプロジェクト ] ダイアログ ボックスで、[ 名前 ] ボックスが使用できないことに注意してください (淡色表示)。 [ 場所 ] ボックスには、次のテキスト (または同様のもの) が含まれています。
    http://localhost/WebApplication1

    場所を に http://localhost/SummaryRow変更し、[OK] をクリック します。 新しいプロジェクトが作成されます。これには、 WebForm1.aspxという名前の Web フォームが含まれます。

  5. ソリューション エクスプローラーで、[WebForm1.aspx] をダブルクリックします。

  6. ツールボックスからフォームに DataGrid コントロールをドラッグします。

  7. DataGrid コントロールを右クリックし、[ 自動書式] をクリックします。 [ カラフル 1] をクリックし、[ OK] をクリックします。

  8. DataGrid コントロールを右クリックし、[プロパティ] をクリックします。 [ プロパティ ] ダイアログ ボックスで、 ShowFooter プロパティの値を True に変更 します

データベースにアクセスするためのコードを記述する

このセクションでは、 Northwind データベースにある Sales Totals by Amount ビューを使用して、SaleAmount フィールドの概要を計算します。 [金額別の売上合計] ビューには、[受注]、[CompanyName]、[SaleAmount] フィールドが含まれます。

  1. IDE で Web フォームを右クリックし、[ コードの表示] をクリックします。

  2. 分離コード ウィンドウで、ページの上部に次のコードを追加します。

    Imports System.Data
    Imports System.Data.SqlClient
    
  3. クラス宣言セクションに次のコードを追加します。

    Private myTotal As System.Double 'This variable tracks the running total.
    
  4. イベントのコードを 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
    
  5. 環境に応じて接続文字列を変更します。

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

プロジェクトをビルドし、コードをテストする

  1. [ファイル] メニューの [すべて保存] をクリックします。
  2. [ ビルド] メニューで、[ ソリューションのビルド] をクリックします。
  3. ソリューション エクスプローラーで、[.aspx] ページを右クリックし、[ブラウザーで表示] をクリックします。 .aspx ページがブラウザーに表示され、DataGrid に OrderID、CompanyName、SaleAmount 列が表示されます。 フッターに SaleAmount 列の合計が表示されます。

関連情報