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

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

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

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

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

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

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

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

  7. DataGrid コントロールを右クリックし、[オート フォーマット] クリック。 [ Colorful 1] をクリックし、[ OK] をクリック

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

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

このセクションでは、 Northwind データベースにある Sales Totals by Amount ビューを使用して、SaleAmount フィールドの概要を計算します。 [Sales Totals by Amount]\(金額別の売上合計\) ビューには、[受注]、[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 プロパティを確認する必要があります。 ItemType Item型またはAlternatingItem型の場合は、SaleAmount 値を含む項目の最後のセルから値を受け取ります。 このサンプルでは、実行中のサマリー変数にこの値を追加します。 ItemTypeFooterされると、すべての行から合計を受け取ります。 したがって、サマリー変数の値を最後のセルのテキスト値に割り当てます。

このコードでは、書式指定式を使用して、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 列の合計が表示されます。

リファレンス