DevExpress中GroupSummary到TotalSummary的总和

时间:2011-05-05 09:16:51

标签: c# asp.net devexpress aspxgridview subtotal

在我的ASPxGridView

我使用此代码在页脚中获得总计IPOTEK列的总数;

<TotalSummary>
<dx:ASPxSummaryItem FieldName="IPOTEK" SummaryType="SUM" ShowInGroupFooterColumn="IPOTEK" DisplayFormat="n0" />
</TotalSummary>

当我在Group的页脚中分组时,我获得IPOTEK列的平均值。

<GroupSummary>
 <dx:ASPxSummaryItem FieldName="IPOTEK" SummaryType="AVERAGE" ShowInGroupFooterColumn="IPOTEK" DisplayFormat="n0" />
</GroupSummary>

一切都好。例如,当我分组时,它看起来像这样; (IPOTEK列已开始 109.827

enter image description here

我想要的是什么;在TotalSummary中,GroupSummary列只有IPOTEK个值。

立即生效,此数据添加TotalSummary109.827 * 3 = 329.481(GroupSummary * 3)

我想要的是,此数据仅向GropupSummary添加TotalSummary值。

我该怎么做?

最诚挚的问候,Soner

1 个答案:

答案 0 :(得分:2)

嗯,这项任务没有直接的解决方案。我看到两种选择:

1)使用custom summary作为页脚摘要,并在DevExpress.Data.CustomSummaryProcess.Finalize的阶段尝试运行所有组行,获取相应的汇总值并对它们求和。要运行组行,请使用以下代码:

protected void ASPxGridView1_CustomSummaryCalculate(object sender, DevExpress.Data.CustomSummaryEventArgs e) {
    if(e.SummaryProcess == DevExpress.Data.CustomSummaryProcess.Finalize) { 
        ASPxGridView grid = sender as ASPxGridView;
        double total = 0;
        for(int i = 0; i < grid.VisibleRowCount; i++) 
            if(grid.IsGroupRow(i)) 
                total += Convert.ToDouble(grid.GetGroupSummaryValue(i, grid.GroupSummary[0]));
        e.TotalValue = total;
        e.TotalValueReady = true;
    }
}

2)在列的FooterTemplate容器中使用标签并处理GridView的PreRender和BeforeGetCallbackResult以设置此标签值。应使用上面的代码计算该值。

我希望,这有帮助。

<强>更新

为什么要使用此代码:

if (grid.IsGroupRow(7))

7是visibleRowIndex,你应该传递i参数