DevExpress 中 GroupSummary 到 TotalSummary 的总计

发布于 2024-11-05 08:37:10 字数 1012 浏览 1 评论 0 原文

在我的 ASPxGridView 中,

我使用此代码在页脚中获得了简单的 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 开始)

>

在此处输入图像描述TotalSummary 中,仅显示 IPOTEK 列的 GroupSummary 值总计。

现在,为此数据添加 TotalSummary109.827 * 3 = 329.481 (GroupSummary * 3)

我想要什么,对于此数据,仅将 GropupSummary 值添加到 TotalSummary 中。

我怎样才能做到这一点?

最好的问候, 索纳

In my ASPxGridView,

I getting total simply IPOTEK column in footer with this code;

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

And i getting average value of IPOTEK column when i grouping in Group's footer.

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

Everything is OK. For example when i grouping with, it looks like this; (IPOTEK column is starting 109.827)

enter image description here

What i want is; in TotalSummary, only total of GroupSummary values for IPOTEK column.

Rigth now, for this data adding TotalSummary value 109.827 * 3 = 329.481 (GroupSummary * 3)

What i want, for this data adding only and only GropupSummary value to TotalSummary.

How can i do that?

Best Regards, Soner

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

一个人的旅程 2024-11-12 08:37:10

嗯,这个任务没有一个简单的解决方案。我看到两种选择:

1)在页脚摘要和阶段使用 自定义摘要 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 参数

Well, there is no a straightforward solution to this task. I see two alternatives:

1) use a custom summary for the footer summary and at the stage of the DevExpress.Data.CustomSummaryProcess.Finalize try to run through all group rows, obtain the corresponding summary values and sum them. To run through group rows, use the following code:

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) use a label within the column's FooterTemplate container and handle the GridView's PreRender and BeforeGetCallbackResult to set this label value. The value should be calculated using the code above.

I hope, this helps.

UPDATE

why are using this code:

if (grid.IsGroupRow(7))

7 is a visibleRowIndex, you should pass the i parameter there

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文