【问题标题】:Telerik RadGrid and Running Totals with Dynamic ColumnsTelerik RadGrid 和使用动态列运行总计
【发布时间】:2012-04-19 13:34:29
【问题描述】:

我有一个 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。有没有办法使用自定义聚合或任何其他方式来做到这一点?

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

【问题讨论】:

    标签: c# asp.net .net telerik radgrid


    【解决方案1】:

    我认为 Telerik 网格中没有任何内置功能/字段/列来显示运行总计,但是您可以在网格的 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();
        }
    }
    

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

    【讨论】:

    • 我使用的是动态列,所以有 1 到 n 列。我可以使用上面的代码在页脚中获取列总数,但不确定如何在可能有 1 到 n 列时完成运行表,所以我不能使用它们的列名。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多