バージョン

カスタム集計の追加

始める前に

標準的な集計の他に、カスタム集計を追加して表示できます。

達成すること

カスタム集計を追加(集計ドロップダウンのオプションとして)および表示する方法を学習します。

次の手順を実行します

  1. 「集計行」トピックの 1 から 6 の手順に従います。

  2. [コレクション エディター] ダイアログで [追加] ボタンをクリックします。 SummaryType から Custom を選択し、CustomSummaryName に対して STDEV と入力します。カスタム集計値に対して集計行に CustomSummaryName プロパティが表示されます。

WebDataGrid Custom Summary Row 01.png
  1. [グリッド動作を編集] ダイアログと [集計行プロパティ] ウィンドウから ColumnSettings 省略記号 (…) をクリックして ColumnSetting ダイアログを起動します。

  2. [列設定] ダイアログで、[項目の追加] ボタンをクリックします。 ColumnKey プロパティに対して UnitPrice を選択します。

WebDataGrid Custom Summary Row 02.png
  1. SummarySettings 省略記号 (…) をクリックして [ SummarySetting コレクション エディター] ダイアログを起動します。

  2. [追加] ボタンをクリックして、 SummaryType ドロップダウン から Custom を選択します。[集計選択] ドロップダウンに表示されている CustomSummaryName に対して Standard Deviation と入力します。

WebDataGrid Custom Summary Row 03.png

以下のマークアップが生成されるはずです。

HTML の場合:

<Behaviors>
    <ig:FooterSummaries AnimationType="Bounce">
        <ColumnSummaries>
            <ig:ColumnSummaryInfo ColumnKey="UnitPrice">
                <Summaries>
                <ig:Summary SummaryType="Custom" CustomSummaryName="STDEV" />
                </Summaries>
            </ig:ColumnSummaryInfo>
        </ColumnSummaries>
        <ColumnSettings>
            <ig:FooterSummariesSetting ColumnKey="UnitPrice">
                <SummarySettings>
                    <ig:SummarySetting CustomSummaryName="Standard Deviation" SummaryType="Custom" />
                </SummarySettings>
            </ig:FooterSummariesSetting>
        </ColumnSettings>
    </ig:FooterSummaries>
</Behaviors>

以下のコードはコード ビハインドからカスタム集計を追加する方法を示します。

Visual Basic の場合:

Dim unitPriceSetting As New FooterSummariesSetting(Me.WebDataGrid1, "UnitPrice")
Dim stdevSetting As New SummarySetting()
stdevSetting.SummaryType = SummaryType.[Custom]
stdevSetting.CustomSummaryName = "STDEV"
stdevSetting.FormatString = "STDEV = {1}"
unitPriceSetting.SummarySettings.Add(stdevSetting)
WebDataGrid1.Behaviors.FooterSummaries.ColumnSettings.Add(unitPriceSetting)
Dim stdevInfo As New ColumnSummaryInfo()
stdevInfo.ColumnKey = "UnitPrice"
Dim stdevSummary As New Summary()
stdevSummary.SummaryType = SummaryType.[Custom]
stdevSummary.CustomSummaryName = "STDEV"
stdevInfo.Summaries.Add(stdevSummary)
WebDataGrid1.Behaviors.FooterSummaries.ColumnSummaries.Add(stdevInfo)

C# の場合:

FooterSummariesSetting unitPriceSetting = new FooterSummariesSetting(this.WebDataGrid1, "UnitPrice");
SummarySetting stdevSetting = new SummarySetting();
stdevSetting.SummaryType = SummaryType.Custom;
stdevSetting.CustomSummaryName = "STDEV";
stdevSetting.FormatString = "STDEV = {1}";
unitPriceSetting.SummarySettings.Add(stdevSetting);
WebDataGrid1.Behaviors.FooterSummaries.ColumnSettings.Add(unitPriceSetting);
ColumnSummaryInfo stdevInfo = new ColumnSummaryInfo();
stdevInfo.ColumnKey = "UnitPrice";
Summary stdevSummary = new Summary();
stdevSummary.SummaryType = SummaryType.Custom;
stdevSummary.CustomSummaryName = "STDEV";
stdevInfo.Summaries.Add(stdevSummary);
WebDataGrid1.Behaviors.FooterSummaries.ColumnSummaries.Add(stdevInfo);
  1. カスタム集計を追加するためには、 CalculateCustomSummary イベントを処理する必要があります。イベントに付加した後で、次のコードを追加します。

Visual Basic の場合:

Protected Function WebDataGrid1_CalculateCustomSummary(sender As Object, e As CustomSummaryEventArgs) As Object
    '標準偏差集計を計算します
    If e.Summary.CustomSummaryName = "STDEV" Then
        'すべての値の集計を計算します
        Dim sum As Double = 0.0
        Dim n As Integer = 0
        For Each gr As GridRecord In Me.WebDataGrid1.Rows
            sum += Convert.ToDouble(gr.Items(2).Value)
            n += 1
        Next
        '偏差平方の集計を計算します
        Dim mean As Double = sum / n
        sum = 0
        For Each gr As GridRecord In Me.WebDataGrid1.Rows
            sum += Math.Pow(mean - Convert.ToDouble(gr.Items(2).Value), 2)
        Next
        sum = sum / (n - 1)
        Return Math.Round(Math.Sqrt(sum), 2)
    End If
    Return Nothing
End Function

C# の場合:

protected object WebDataGrid1_CalculateCustomSummary(object sender, CustomSummaryEventArgs e)
 {
     //標準偏差集計を計算します
     if (e.Summary.CustomSummaryName == "STDEV")
     {
         //すべての値の集計を計算します
         double sum = 0.0;
         int n = 0;
         foreach (GridRecord gr in this.WebDataGrid1.Rows)
         {
             sum += Convert.ToDouble(gr.Items[2].Value);
             ++n;
         }
         //偏差平方の集計を計算します
         double mean = sum / n;
         sum = 0;
         foreach (GridRecord gr in this.WebDataGrid1.Rows)
         {
             sum += Math.Pow(mean - Convert.ToDouble(gr.Items[2].Value), 2);
         }
         sum = sum / (n - 1);
         return Math.Round(Math.Sqrt(sum), 2);
     }
     return null;
 }
  1. アプリケーションを保存して実行します。UnitPrice 列のフッターに STDEV 集計が表示されます。

WebDataGrid Custom Summary Row 04.png