C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[2]: ASP.NET2.0 GridViewの累計合計が分からない


(過去ログ 13 を表示中)

[トピック内 3 記事 (1 - 3 表示)]  << 0 >>

■3514 / inTopicNo.1)  ASP.NET2.0 GridViewの累計合計が分からない
  
□投稿者/ ひで (1回)-(2007/05/12(Sat) 16:39:23)

分類:[VB.NET (ASP.NET)] 

2007/05/14(Mon) 07:28:24 編集(投稿者)
2007/05/14(Mon) 07:25:50 編集(投稿者)

VWD Express 、VB 、SQLServer2005 Express 、WinXPでGridViewを使ったの簡単なアプリを作っています。在庫表のそれぞれの列(饅頭、せんべい)の累計を求めたいと思っていますがうまくいきません。以下のコードをmsdnより引いてDefault.aspx.vbに書いたのですがGridViewのほうは表示されますがまったくフッターに累計部分が表示されません。書く場所が違うのかそれともDefault.aspxに書くのでしょうか。初歩的なことが調べても分かりません。よろしくお願いします。
尚、累計は単純に表の合計であってもかまいません。なるべく簡単な方法でお教え願います。
饅頭、せんべいのそれぞれの列の合計をフッターに表示できればいいと思っています。

Dim priceTotal As Decimal = 0
Dim quantityTotal As Integer = 0
Sub detailsGridView_RowDataBound(ByVal sender As Object, _
ByVal e As GridViewRowEventArgs)
If e.Row.RowType = DataControlRowType.DataRow Then

priceTotal += Convert.ToDecimal(DataBinder.Eval(e.Row.DataItem, _
"饅頭"))
quantityTotal += Convert.ToInt32(DataBinder.Eval(e.Row.DataItem, _
"せんべい"))
ElseIf e.Row.RowType = DataControlRowType.Footer Then
e.Row.Cells(0).Text = "Totals:"
' フッターに、累計を表示します。
e.Row.Cells(1).Text = priceTotal.ToString("c")
e.Row.Cells(2).Text = quantityTotal.ToString("d")

e.Row.Cells(1).HorizontalAlign = HorizontalAlign.Right
e.Row.Cells(2).HorizontalAlign = HorizontalAlign.Right
e.Row.Font.Bold = True
End If


引用返信 編集キー/
■3567 / inTopicNo.2)  Re[1]: ASP.NET2.0 GridViewの累計合計が分からない
□投稿者/ 七曜 (2回)-(2007/05/15(Tue) 17:47:41)
おそらく、
[GridView Examples for ASP.NET 2.0: Displaying Summary Data in the Footer]
http://msdn2.microsoft.com/en-us/library/ms972833.aspx
を参考にされたのだと思いますが・・・。

@Defalut.aspxのデザインビューで、DataGridを選択し、プロパティ ウィンドウで
 (1)ShowFooter プロパティをTrueに設定
 (2)RowDataBound イベントにイベントマップ
   (イベント名をダブルクリックすると自動的にイベントハンドラが作成されます。)
Aページクラス内にPrivateで合計計算用の変数を用意
 Dim priceTotal As Decimal = 0
 Dim quantityTotal As Integer = 0
 これに近いですが、饅頭と煎餅であれば、それ用の変数を用意しましょうね。
B@-(2)で用意したイベントハンドラ内に集計及び合計(フッター設定)の処理を記述
---ここから-----------------------------------------------------------------
If e.Row.RowType = DataControlRowType.DataRow Then
' add the UnitPrice and QuantityTotal to the running total variables
priceTotal += Convert.ToDecimal(DataBinder.Eval(e.Row.DataItem, _
"UnitPrice"))
quantityTotal += Convert.ToInt32(DataBinder.Eval(e.Row.DataItem, _
"Quantity"))
---ここまで-----------------------------------------------------------------
これが集計処理(データ行であれば合計値を加算する処理)です。
---ここから-----------------------------------------------------------------
ElseIf e.Row.RowType = DataControlRowType.Footer Then
e.Row.Cells(0).Text = "Totals:"
' for the Footer, display the running totals
e.Row.Cells(1).Text = priceTotal.ToString("c")
e.Row.Cells(2).Text = quantityTotal.ToString("d")

e.Row.Cells(1).HorizontalAlign = HorizontalAlign.Right
e.Row.Cells(2).HorizontalAlign = HorizontalAlign.Right
e.Row.Font.Bold = True
End If
---ここまで-----------------------------------------------------------------
ここは、合計行(フッター行)の設定になります。

恐らく意図通り動作していない原因は、
 イベントがマッピングされていない。(単にDefault.aspx.vbにコピーしたのではイベントハンドラとして動作しません。)
ためです。
また、最初の方にも書きましたがpriceTotal、quantityTotalなんかは数量であれば数量用の変数型/変数名で宣言しましょう。
同時に表示用のフォーマットや計算行
priceTotal += Convert.ToDecimal(DataBinder.Eval(e.Row.DataItem, _
"UnitPrice"))
quantityTotal += Convert.ToInt32(DataBinder.Eval(e.Row.DataItem, _
"Quantity"))
や、
e.Row.Cells(1).Text = priceTotal.ToString("c")
e.Row.Cells(2).Text = quantityTotal.ToString("d")
もご希望の表記に変更する必要があるかと思います。

#英文とはいえ、比較的簡単な内容なのでソースコードとあわせて、内容を理解して試しましょうね。

引用返信 編集キー/
■3708 / inTopicNo.3)  Re[2]: ASP.NET2.0 GridViewの累計合計が分からない
□投稿者/ hひで (1回)-(2007/05/20(Sun) 06:21:18)
No3567 (七曜 さん) に返信
七曜さん適切なアドバイス本当にありがとうございました。
おかげさまで気に入ったものができました。
小生かなりのおじさんでちょっと苦労しましたが。
感謝申し上げます。
               ひで
解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -