標準的な集計の他に、カスタム集計を追加して表示できます。
カスタム集計を追加(集計ドロップダウンのオプションとして)および表示する方法を学習します。
「集計行」トピックの 1 から 6 の手順に従います。
[コレクション エディター] ダイアログで [追加] ボタンをクリックします。 SummaryType から Custom を選択し、CustomSummaryName に対して STDEV と入力します。カスタム集計値に対して集計行に CustomSummaryName プロパティが表示されます。
[グリッド動作を編集] ダイアログと [集計行プロパティ] ウィンドウから ColumnSettings 省略記号 (…) をクリックして ColumnSetting ダイアログを起動します。
[列設定] ダイアログで、[項目の追加] ボタンをクリックします。 ColumnKey プロパティに対して UnitPrice を選択します。
SummarySettings 省略記号 (…) をクリックして [ SummarySetting コレクション エディター] ダイアログを起動します。
[追加] ボタンをクリックして、 SummaryType ドロップダウン から Custom を選択します。[集計選択] ドロップダウンに表示されている CustomSummaryName に対して Standard Deviation と入力します。
以下のマークアップが生成されるはずです。
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);
カスタム集計を追加するためには、 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;
}
アプリケーションを保存して実行します。UnitPrice 列のフッターに STDEV 集計が表示されます。