1

发表于 1 天前 嗨,我在 radgrid 中有一个货币值列,并使用此函数导出到 excel 以格式化货币单元格

protected void RadGrid_OnExportCellFormatting(object sender, ExportCellFormattingEventArgs e)
{
    if (e.FormattedColumn.DataType == typeof (long))
    {
        e.Cell.Style["mso-number-format"] = "Currency";
    }
}

效果很好,但它不会格式化作为聚合总和值的页脚项目。如何将页脚也格式化为货币?

4

1 回答 1

2

在标记中(如果您使用 AJAX 控件),您可以定义(页脚)聚合格式,如下所示:

<telerik:GridBoundColumn DataField="columnName" HeaderText="Money" UniqueName="uniqueColumnName"  
    DataFormatString="{0:C}" Aggregate="Sum" FooterAggregateFormatString="{0:C}" />

这将在显示和导出的网格上实现。但是,您可能不想在屏幕上显示它;在这些情况下,您可以从导出事件处理程序中更新属性。您还应该注意,从上面的标记中,有一个DataFormatString属性可以格式化单元格中显示的数据。

protected void RadGrid_OnExportCellFormatting(object sender, ExportCellFormattingEventArgs e)
{
    if ((e.FormattedColumn.DataType == typeof(long))) {
        e.Cell.Style("mso-number-format") = "Currency";
        if (((e.FormattedColumn) is GridBoundColumn)) {
            GridBoundColumn col = e.FormattedColumn;
            col.FooterAggregateFormatString = "{0:C}";
        }
    }
} 

否则,您可以使用GridExporting事件处理程序执行此操作:

protected void RadGrid_GridExporting(object sender, GridExportingArgs e)
{
    GridColumn gridCol = grdCustomers.MasterTableView.GetColumnSafe("uniqueColumnName");
    if (((gridCol) is GridBoundColumn)) {
        GridBoundColumn boundCol = (GridBoundColumn)gridCol;
        boundCol.FooterAggregateFormatString = "{0:C}";
    }
}

我确信上面完成的转换等可以更有效/正确地实现,但上面的代码应该是一个合理的起点。

于 2013-10-30T14:55:38.540 回答