|
おそらく、 [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") もご希望の表記に変更する必要があるかと思います。
#英文とはいえ、比較的簡単な内容なのでソースコードとあわせて、内容を理解して試しましょうね。
|