c# - Telerik RadGrid 和动态列的运行总计

标签 c# asp.net .net telerik radgrid

我有一个 RadGrid,它有一个带有动态列的数据源。我还在 columncreated 事件中使用以下代码对数据进行分组并在组页脚中显示列的总计:

if (e.Column.ColumnType != "GridExpandColumn" & e.Column.ColumnType != "GridGroupSplitterColumn")
    {
        if (e.Column.UniqueName != "Item" && e.Column.UniqueName != "Width" && e.Column.UniqueName != "Type" && e.Column.UniqueName != "Balance")
        {
            ((Telerik.Web.UI.GridBoundColumn)e.Column).Groupable = true;
            ((Telerik.Web.UI.GridBoundColumn)e.Column).DataFormatString = "{0:N0}";
            ((Telerik.Web.UI.GridBoundColumn)e.Column).Aggregate = Telerik.Web.UI.GridAggregateFunction.Sum;
        }
    }

我的客户希望分组的页脚总计是一个运行总计。即,如果第一个总数为 100,第二个总数为 25,则第二个总数在页脚中的总数应显示为 75。有没有办法使用自定义聚合或任何其他方式来做到这一点?

任何帮助都会很棒。谢谢!

最佳答案

我认为 telerik 网格中没有任何内置功能/字段/列来显示运行总计,但是您可以通过计算、存储并将其绑定(bind)到页脚模板列在网格的 ItemDataBound 事件中实现此目的,以下是示例代码:

protected void RadGrid1_ItemDataBound1(object sender, GridItemEventArgs e)
{
    if (e.Item is GridDataItem)
    {
        GridDataItem dataItem = e.Item as GridDataItem;
        string payment = dataItem["PaymentAmount"].Text;
        decimal fieldValue = decimal.Parse(payment);
        total += fieldValue;
        dataItem["Balance"].Text = total.ToString();
    }

    if (e.Item is GridFooterItem)
    {
        GridFooterItem footerItem = e.Item as GridFooterItem;
        footerItem["PaymentAmount"].Text = "total: " + total.ToString();
    }
}

如果我遗漏了什么,请告诉我。

关于c# - Telerik RadGrid 和动态列的运行总计,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10229231/

相关文章:

c# - Visiblox LabelsContainer 调整?

c# - Windows 8 本地存储

javascript - 弹出窗口打开后重定向到页面

c# - 使用计时器处理类的正确方法是什么?

c# - WebApi 在过滤器中获取帖子原始正文

c# - 如何在 Windows 10 应用中实现应用内购买?

c# - 仅当页面向下滚动时才加载数据MVC 4 Jquery Mobile

asp.net - 在 Webmethod 中获取 Request.Form 值

c# - 我应该使用 XML 文件的命名空间来识别其版本吗

c# - string.Clone() 有什么用?