在我的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 )
我想要的是什么;在TotalSummary
中,GroupSummary
列只有IPOTEK
个值。
立即生效,此数据添加TotalSummary
值109.827
* 3
= 329.481
(GroupSummary * 3)
我想要的是,此数据仅向GropupSummary
添加TotalSummary
值。
我该怎么做?
最诚挚的问候,Soner
答案 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参数