FlexGrid for WinForms
Subtotal(AggregateEnum,Int32,Int32,Int32,Int32,String,AggregateFlags) メソッド
使用例 

C1.Win.FlexGrid.8 アセンブリ > C1.Win.FlexGrid 名前空間 > C1FlexGridBase クラス > Subtotal メソッド : Subtotal(AggregateEnum,Int32,Int32,Int32,Int32,String,AggregateFlags) メソッド
計算する集計の種類を指定する AggregateEnum 値。
新しい小計行に割り当てるアウトラインレベル。このパラメータを使用して、複数レベルの小計を作成できます。また、アウトラインツリーの表示に影響します。
グループの境界を検出するために使用する範囲内の最初の列。
グループの境界を検出するために使用する範囲内の最後の列。
集計する値(通常は数値)を含む列。
小計行に挿入するテキスト。
集計の計算時に使用するオプション。
セルコンテンツに基づいて行をグループ化し、集計値を計算します。
シンタックス
'宣言
 
Public Overloads Sub Subtotal( _
   ByVal aggType As AggregateEnum, _
   ByVal level As System.Integer, _
   ByVal groupFrom As System.Integer, _
   ByVal groupTo As System.Integer, _
   ByVal totalOn As System.Integer, _
   ByVal caption As System.String, _
   ByVal options As AggregateFlags _
) 
public void Subtotal( 
   AggregateEnum aggType,
   System.int level,
   System.int groupFrom,
   System.int groupTo,
   System.int totalOn,
   System.string caption,
   AggregateFlags options
)

パラメータ

aggType
計算する集計の種類を指定する AggregateEnum 値。
level
新しい小計行に割り当てるアウトラインレベル。このパラメータを使用して、複数レベルの小計を作成できます。また、アウトラインツリーの表示に影響します。
groupFrom
グループの境界を検出するために使用する範囲内の最初の列。
groupTo
グループの境界を検出するために使用する範囲内の最後の列。
totalOn
集計する値(通常は数値)を含む列。
caption
小計行に挿入するテキスト。
options
集計の計算時に使用するオプション。
解説

Subtotal(AggregateEnum,Int32,Int32,Int32,Int32,String,AggregateFlags) メソッドは、集計値を含む行を挿入します。これらの新しい行は、ツリーノードとして動作するように設定され、これを折りたたんだり展開して動的な階層アウトラインを表示できます。

Tree プロパティを使用すると、アウトラインツリーの外観や動作を制御できます。

Subtotal(AggregateEnum,Int32,Int32,Int32,Int32,String,AggregateFlags) メソッドによって追加されたノード行は、RowCol.Style プロパティが Styles.Subtotal* スタイルの 1 つに自動的に設定されます。Styles コレクションを使用すると、グリッド内のすべての小計行の外観を変更できます。

アウトラインツリーを手作業で作成するには、RowCollection.InsertNode メソッドを使用してノード行を挿入するか、ノード行の Row.IsNode プロパティを true に設定して、通常の行をノードに変換します。次に、Node.Level プロパティを使用して、新しいノードのアウトラインレベルを設定します。

使用例

次のコードでは、グリッドに 4 つの列(Product、Region、Employee、Sales)があるとします。

このコードは、最初の 2 つの列に基づいてグループ化を行い、各製品の売上高と各製品内の各地域の売上高を計算します。

ユーザーが 1 つの列を別の位置にドラッグすると、ツリーが自動的に再構成され、(Employee、Region などに基づく)新しいグループが表示されます。

void UpdateTotals()
{
  // 完了するまで再描画しません
  _flex.Redraw = false;

  // 古い小計があればクリアします
  _flex.Subtotal(AggregateEnum.Clear);

  // グループ化される列に基づいてグリッドをソートします
  _flex.Sort(SortFlags.Ascending, 0, 3);

  // 列 0 のアウトラインツリーを表示します
  _flex.Tree.Column = 0;

  // 総計を取得します(列インデックスではなく -1 を使用)
  _flex.Subtotal(AggregateEnum.Sum, -1, -1, 3, "Grand Total");

  // 列 0(最初は Product)を小計します
  _flex.Subtotal(AggregateEnum.Sum, 0, 0, 3);

  // 列 1(最初は Region)を小計します
  _flex.Subtotal(AggregateEnum.Sum, 1, 1, 3);

  // アウトラインレベル 1 を表示します
  _flex.Tree.Show(1);

  // 描画を復元します
  _flex.Redraw = true;
}
void _flex_AfterDragColumn(object sender, C1.Win.FlexGrid.DragRowColEventArgs e)
{
  UpdateTotals(); // ユーザーが列を移動したので、合計を更新します
}
参照

C1FlexGridBase クラス
C1FlexGridBase メンバ
オーバーロード一覧