ASP.NET で Visual C# を使用して DataGrid コントロールの集計行を作成する

この記事では、ASP.NET で Visual C# を使用して DataGrid コントロールの集計行を作成する方法について説明します。

元の製品バージョン: Visual C#
元の KB 番号: 326339

概要

この記事では、Visual C# .NET プロジェクトを作成し、Northwind データベースから Sales Totals by Amount ビューにアクセスするコードを追加し、[Sales Totals by Amount]\(金額別売上合計\) ビューを DataGrid にバインドします。 このサンプルでは、DataGrid の ItemDataBound イベントを使用して、DataGrid にデータをバインドするときにフィールドを合計 SaleAmount します。 このサンプルでは、DataGrid のフッターを使用して、概要または合計も表示します。

この記事の Microsoft Visual Basic .NET バージョンについては、「 Visual Basic .NET を使用して ASP.NET で DataGrid の集計行を作成する方法」を参照してください。

この記事では、次の .NET Framework クラス ライブラリ名前空間 を参照しますSystem.Data.SqlClient

要件

次の一覧は、必要な推奨ハードウェア、ソフトウェア、ネットワーク インフラストラクチャ、およびサービス パックの概要を示しています。

  • Windows
  • .NET Framework
  • Visual Studio .NET
  • インターネット インフォメーション サービス (IIS)
  • SQL Server 7.0 以降と Northwind データベース

注:

Northwind データベースは、SQL Server 7.0 以降に含まれています。

Visual C# .NET プロジェクトを作成し、DataGrid コントロールを追加する

このセクションでは、Visual C# .NET プロジェクトを作成し、DataGrid の形式を選択し、フッターを表示するように DataGrid を設定します。 フッターを使用して概要を表示するため、フッターを表示することが重要です。

注:

既定では、 ShowFooter プロパティはオフになっています。

  1. Visual Studio .NET を起動します。 Visual Studio .NET 統合開発環境 (IDE) が表示されます。

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

  3. [新しいプロジェクト] ダイアログ ボックスで、[プロジェクトの種類] の [Visual C# プロジェクト] をクリックし、[テンプレート] の下にある [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 データベースにある [金額別売上合計] ビューを使用して、フィールドの概要をSaleAmount計算します。 [Sales Totals by Amount]\(売上合計\) ビューには、OrdersCompanyNameおよび フィールドがSaleAmount含まれます。

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

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

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

    private double myTotal; //This variable tracks the running total.
    
  4. イベントのコードを Page_Load 次のコードに置き換えます。

    private void Page_Load (object sender, System.EventArgs e)
    {
        //Connect to the database, retrieve data, and then fill the data in the DataSet.
        SqlConnection myConnection = new SqlConnection ("server=(local);uid=sa;" +
                        "pwd=password;database=northwind");
        SqlDataAdapter myDataAdapter = new SqlDataAdapter ("SELECT top 15 [OrderID], [CompanyName], " +
                        "[SaleAmount] FROM [Northwind].[dbo].[Sales Totals by Amount]", myConnection);
        DataSet myDataSet = new DataSet ();
        myDataAdapter.Fill (myDataSet);
    
        //Set the DataSource for the DataGrid, and then bind the data.
        DataGrid1.DataSource = myDataSet;
        DataGrid1.DataBind ();
    }
    
  5. 環境に応じて接続文字列を変更します。

  6. 生成されたコード領域Designer Web フォームを展開し、関数に次のステートメントをInitializeComponent追加します。

    this.DataGrid1.ItemDataBound
    += new System.Web.UI.WebControls.DataGridItemEventHandler(this.DataGrid1_ItemDataBound);
    

ItemDataBound イベントを使用する

イベントは ItemDataBound 、項目が DataGrid コントロールにバインドされたデータの後に発生します。 このイベントは、クライアントに表示される前に、データ項目に最後にアクセスする機会を与えます。 このイベントが発生すると、データ項目は null になり、使用できなくなります。

データバインドされたアイテムごとに、 プロパティをチェックするItemType必要があります。 が 型Itemまたは AlternatingItemの場合ItemTypeは、値を含む項目の最後のセルから値をSaleAmount受け取ります。 このサンプルでは、この値を実行中のサマリー変数に追加します。 ItemTypeが の場合はFooter、すべての行から合計を受け取ります。 そのため、サマリー変数の値を最後のセルのテキスト値に割り当てます。

注:

このコードでは、書式設定式を使用して、データの一様な外観を提供します SaleAmount

イベントの後に次のコードを Page_Load 追加します。

private void DataGrid1_ItemDataBound (object sender, System.Web.UI.WebControls.DataGridItemEventArgs e)
{
    switch ((int) (e.Item.ItemType))
    {
        case (int) ListItemType.Item:
        case (int) ListItemType.AlternatingItem:
            //Calculate total for the field of each row and alternating row.
            myTotal += Convert.ToDouble (e.Item.Cells[2].Text);
            //Format the data, and then align the text of each cell to the right.
            e.Item.Cells[2].Text = Convert.ToDouble (e.Item.Cells[2].Text).ToString ("##,##0.00");
            e.Item.Cells[2].Attributes.Add ("align", "right");
            break;
        case (int) 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");
            break;
    }
}

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

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

関連情報