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 プロパティはオフになっています。
Visual Studio .NET を起動します。 Visual Studio .NET 統合開発環境 (IDE) が表示されます。
[ ファイル] メニューの [ 新規] をポイントし、[ プロジェクト] をクリックします。
[新しいプロジェクト] ダイアログ ボックスで、[プロジェクトの種類] の [Visual C# プロジェクト] をクリックし、[テンプレート] の下にある [ASP.NET Web アプリケーション] をクリックします。
[ 新しいプロジェクト ] ダイアログ ボックスで、[ 名前 ] ボックスが使用できないことに注意してください (淡色表示)。 [ 場所 ] ボックスには、テキスト (または同様の)
http://localhost/WebApplication1
が含まれています。場所を に
http://localhost/SummaryRow
変更し、[OK] をクリック します。 新しいプロジェクトが作成されます。これには、 WebForm1.aspxという名前の Web フォームが含まれます。ソリューション エクスプローラーで、[WebForm1.aspx] をダブルクリックします。
ツールボックスからフォームに DataGrid コントロールをドラッグします。
[DataGrid] を右クリックし、[ 自動書式] をクリックします。 [ カラフル 1] をクリックし、[ OK] をクリックします。
DataGrid を右クリックし、[ プロパティ] をクリックします。 [ プロパティ ] ダイアログ ボックスで、 ShowFooter プロパティの値を True に変更 します。
データベースにアクセスするためのコードを記述する
このセクションでは、Northwind データベースにある [金額別売上合計] ビューを使用して、フィールドの概要をSaleAmount
計算します。 [Sales Totals by Amount]\(売上合計\) ビューには、Orders
CompanyName
および フィールドがSaleAmount
含まれます。
Visual Studio .NET IDE で Web フォームを右クリックし、[ コードの表示] をクリックします。
分離コード ウィンドウで、ページの上部に次のコードを追加します。
using System.Data.SqlClient;
クラス宣言セクションに次のコードを追加します。
private double myTotal; //This variable tracks the running total.
イベントのコードを
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 (); }
環境に応じて接続文字列を変更します。
生成されたコード領域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;
}
}
プロジェクトをビルドし、コードをテストする
- [ファイル] メニューの [すべて保存] をクリックします。
- [ ビルド] メニューで、[ ソリューションのビルド] をクリックします。
- ソリューション エクスプローラーで、[.aspx] ページを右クリックし、[ブラウザーで表示] をクリックします。 .aspx ページがブラウザーに表示され、DataGrid に OrderID、 CompanyName、 SaleAmount 列が表示されます。 フッターに SaleAmount 列の合計が表示されます。
関連情報
フィードバック
https://aka.ms/ContentUserFeedback」を参照してください。
以下は間もなく提供いたします。2024 年を通じて、コンテンツのフィードバック メカニズムとして GitHub の issue を段階的に廃止し、新しいフィードバック システムに置き換えます。 詳細については、「フィードバックの送信と表示