Back to Devexpress

GridDocumentExportSummaryItem Class

blazor-devexpress-dot-blazor-0478de45.md

latest5.5 KB
Original Source

GridDocumentExportSummaryItem Class

A summary displayed in an exported cell.

Namespace : DevExpress.Blazor

Assembly : DevExpress.Blazor.v25.2.dll

NuGet Package : DevExpress.Blazor

Declaration

csharp
public class GridDocumentExportSummaryItem :
    GridDocumentExportSummaryItemBase

Remarks

When exporting Grid data to PDF, handle the CustomizeCell event to customize table cells in the output file. Use the SummaryItems property to obtain information about summaries displayed in the processed cell.

The following example customizes the text and formatting of summaries in the exported document:

@rendermode InteractiveServer
@using DevExpress.Drawing;
@inject WeatherForecastService ForecastService

<DxGrid @ref="Grid" Data="@forecasts">
    <Columns>
        <DxGridDataColumn Caption="Date" FieldName="Date" ExportWidth="500" />
        <DxGridDataColumn Caption="Temperature (C)" FieldName="TemperatureC" />
        <DxGridDataColumn Caption="Temperature (F)" FieldName="TemperatureF" />
        <DxGridDataColumn Caption="Summary" FieldName="Summary" />
    </Columns>
    <TotalSummary>
        <DxGridSummaryItem SummaryType="GridSummaryItemType.Min" FieldName="Date" />
        <DxGridSummaryItem SummaryType="GridSummaryItemType.Max" FieldName="Date" />
        <DxGridSummaryItem SummaryType="GridSummaryItemType.Min" FieldName="TemperatureC" />
        <DxGridSummaryItem SummaryType="GridSummaryItemType.Max" FieldName="TemperatureC" />
    </TotalSummary>
    <ToolbarTemplate>
        <DxToolbar>
            <DxToolbarItem Text="Export to PDF" Click="ExportPdf_Click" BeginGroup="true" />
        </DxToolbar>
    </ToolbarTemplate>
</DxGrid>

@code {
    IGrid Grid;
    private WeatherForecast[]? forecasts;

    protected override async Task OnInitializedAsync() {
        forecasts = await ForecastService.GetForecastAsync(DateOnly.FromDateTime(DateTime.Now));
    }
    async Task ExportPdf_Click() {
        await Grid.ExportToPdfAsync("ExportResult", new GridPdfExportOptions() {
            CustomizeCell = OnCustomizeCell,
        });
    }
    void OnCustomizeCell(GridDocumentExportCustomizeCellEventArgs args) {
        if (args.AreaType == DocumentExportAreaType.TotalFooter ) {
            if (args.ColumnFieldName == "Date") {
                var sum1 = args.SummaryItems[0];
                var sum2 = args.SummaryItems[1];
                args.Text = sum1.SummaryType + " " + sum1.FieldName + ": " + sum1.Value;
                args.Text += "\n" + sum2.SummaryType + " " + sum2.FieldName + ": " + sum2.Value;
            }
            if (args.ColumnFieldName == "TemperatureC") {
                args.Text = args.SummaryItems[0].Text + "°C\n" + args.SummaryItems[1].Text + "°C";
                args.ElementStyle.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleRight;
            }
        }
        args.Handled = true;
    }
}
csharp
using System;

public class WeatherForecast {
    public DateTime Date { get; set; }
    public int TemperatureC { get; set; }
    public string Forecast { get; set; }
    public string CloudCover { get; set; }
}
csharp
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading;
using System.Threading.Tasks;

public class WeatherForecastService {
    private List<WeatherForecast> Forecast { get; set; }

    private static string[] CloudCover = new[] {
        "Sunny", "Partly cloudy", "Cloudy", "Storm"
    };

    Tuple<int, string>[] ConditionsForForecast = new Tuple<int, string>[] {
        Tuple.Create( 22 , "Hot"),
        Tuple.Create( 13 , "Warm"),
        Tuple.Create( 0 , "Cold"),
        Tuple.Create( -10 , "Freezing")
    };

    public WeatherForecastService() {
        Forecast = CreateForecast();
    }

    private List<WeatherForecast> CreateForecast() {
        var rng = new Random();
        DateTime startDate = DateTime.Now;
        return Enumerable.Range(1, 30).Select(index => {
            var temperatureC = rng.Next(-10, 30);
            return new WeatherForecast {
                Date = startDate.AddDays(index),
                TemperatureC = temperatureC,
                CloudCover = CloudCover[rng.Next(0, 4)],
                Forecast = ConditionsForForecast.First(c => c.Item1 <= temperatureC).Item2
            };
        }).ToList();
    }

    public List<WeatherForecast> GetForecast() {
        return Forecast;
    }

    public Task<WeatherForecast[]> GetForecastAsync(CancellationToken ct = default) {
        return Task.FromResult(Forecast.ToArray());
    }
}
csharp
// ...
builder.Services.AddSingleton<WeatherForecastService>();

Inheritance

Object GridDocumentExportSummaryItemBase GridDocumentExportSummaryItem

See Also

GridDocumentExportSummaryItem Members

DevExpress.Blazor Namespace