0

ASP.NET 3.5 には、somwehat 動的データテーブルにバインドされたデータグリッドがあります。データテーブルは、データセットから返された 3 つの異なるテーブルを取得し、それらを組み合わせて 1 つのテーブルを作成することによって作成されます。

こんなふうになります。最初のデータ テーブルは、最終的なデータ テーブルに含まれる列のリストを返します。2 番目のデータテーブルは、人のリスト、ID 番号、ステータス情報、および最終テーブルの行の最後に表示される総計を返します。3 番目のテーブルは、1 番目の個人 ID と列に一致する特定のタイプの値のリストを返します。

Table1
ProdID ProdName
1 Widgets
2 スタッフ
... ...

表2
PersonID PersonName
103 John Smith
105 Tim Doe
... ...

表 3
PersonID ProdID 金額
103 1 205.00
103 2 234.00
105 1 150.00
105 2 189.00

結果のテーブルは
PersonName ProdName 金額
John Smith Widgets 205.00
John Smith Stuff 234.00
Tim Doe Widgets 150.00
Tim Doe Stuff 189.00 になります。

各列を名前で合計する Dictionary を作成できましたが、終了テーブルがバインドされているデータグリッドのフッターに合計を表示したいと考えています。

したがって、Widgets の下の合計は 355 で、Stuff の下の合計は 423 になるはずです。問題は、これらの値をフッターに入れる方法がわからないことです。グリッドに対して OnDataBinding を試しましたが、フッターがバインドされていないため、そこで停止することはありません。作成したテーブルを「ロールアップ」できるかどうかわかりません。

何か案は?

4

4 に答える 4

1

コードビハインドでこのようなものが機能します。セルインデックス、DataTable名などを変更する必要がありますが、これは基本的にフッターに合計を追加する方法です。

GridView1.FooterRow.Cells[4].Text = string.Format("{0:C}", myDataTable.Compute( "sum(Net_Price)", ""));

また、DataGridの「ShowFooter」プロパティを「True」に設定する必要があります。

ここに完全な記事:http: //programming.top54u.com/post/ASP-Net-DataTable-Compute-Column-Sum-using-C-sharp.aspx

于 2009-10-08T21:52:15.830 に答える
1

ここで私が理解していることから、製品名に基づいて各グループの小計を取得したいと考えています。

列名がわかっている場合は、LINQ を使用して結果をグループ化して集計を取得できます。それらを最後のレコードとして挿入する場合は、クエリを実行した後に DS に挿入するだけです。

于 2009-10-08T21:42:02.957 に答える
0

問題を解決できました。製品のリストが動的になる可能性があるため、HTML/ASPX コードに BoundColumns がないことに気付きました。プログラムで作成する必要がありました。それらを作成するときは、列のキャプションを確認します。キャプションが辞書にキーとして存在する場合、値 (合計) を返し、それを列の FooterText 値として設定しました。

しかし、すべての提案をありがとう!

于 2009-10-09T13:54:06.027 に答える
0

group by を使用して別の SQL クエリを作成すると、各サブグループの合計を取得して、簡単に分離することができます。次に、クエリの結果セットの各行を解析し、文字列を作成します。作成した文字列を使用すると、フッターの任意の列に簡単に挿入できます。

于 2009-10-09T13:40:23.217 に答える