2011-05-05 72 views
0

在我ASPxGridView达尔TotalSummary在DevExpress的

我获得总与本规则页脚只是IPOTEK列;

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

而且我越来越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

+0

我是正确的,你想要的TotalSummary我的假设计算为小组摘要的总和? – 2011-05-05 12:06:39

+0

是的!绝对正确! – 2011-05-05 12:16:04

回答

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设置该标签值。该值应使用上面的代码进行计算。

我希望这会有所帮助。

UPDATE

为什么使用此代码:

if (grid.IsGroupRow(7)) 

7是visibleRowIndex,你应该通过我的参数有

+0

我尝试你的第一个选择。通常,当我为IPOTEK列选择TotalSummary时,请获取3.861.819值。但是当我尝试你的代码得到resutl 21.317.855。它应该在1.800.000左右。也许这个代码将所有行的值全部添加到右边?我只想在一个组中添加一个总计值 – 2011-05-05 14:30:06

+0

以下是我的完整代码http://www.heypasteit.com/clip/XIA – 2011-05-05 14:35:30

+0

在红色方块中是* IPOTEK *小计,但它与下一小计相同http://i.imgur .COM/IR0nO。png – 2011-05-05 14:37:02