Back to Devexpress

GridDocumentExportCustomizeCellEventArgs.SummaryItems Property

blazor-devexpress-dot-blazor-dot-griddocumentexportcustomizecelleventargs.md

latest6.5 KB
Original Source

GridDocumentExportCustomizeCellEventArgs.SummaryItems Property

Returns information about summary items displayed in the processed cell.

Namespace : DevExpress.Blazor

Assembly : DevExpress.Blazor.v25.2.dll

NuGet Package : DevExpress.Blazor

Declaration

csharp
public IReadOnlyList<GridDocumentExportSummaryItem> SummaryItems { get; }

Property Value

TypeDescription
IReadOnlyList<GridDocumentExportSummaryItem>

A list of summary items displayed in the processed cell. If the cell does not contain summaries, the property returns null.

|

Remarks

When exporting Grid data to PDF, handle the CustomizeCell event to customize table cells in the output file. The AreaType event argument identifies the area containing the processed cell.

Use the SummaryItems property to obtain information about summaries displayed in this cell. If the cell does not contain summaries, the property returns null.

The following example exports Grid data to PDF and customizes the output table appearance:

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

<DxGrid @ref="Grid" Data="@forecasts" ShowGroupPanel="true">
    <Columns>
        <DxGridDataColumn Caption="Date" FieldName="Date" />
        <DxGridDataColumn Caption="Temperature (C)" FieldName="TemperatureC" ExportWidth="300"/>
        <DxGridDataColumn Caption="Temperature (F)" FieldName="TemperatureF" ExportWidth="300" />
        <DxGridDataColumn Caption="Summary" FieldName="Summary" GroupIndex="0" />
    </Columns>
    <TotalSummary>
        <DxGridSummaryItem SummaryType="GridSummaryItemType.Count" 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.Header){
            args.ElementStyle.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleCenter;
            args.ElementStyle.Font = new DXFont("Arial", 10, DXFontStyle.Bold);
        }
        if (args.AreaType == DocumentExportAreaType.GroupHeader && args.GroupFieldName == "Summary")
            args.Text = args.Value + ":";
        if (args.AreaType == DocumentExportAreaType.DataArea) {
            args.ElementStyle.BackColor = System.Drawing.Color.MintCream;
            if (args.ColumnFieldName.Contains("Temperature")) {
                var forecast = (WeatherForecast)args.DataItem;
                if (forecast.TemperatureC < 0)
                    args.ElementStyle.ForeColor = System.Drawing.Color.Blue;
                if (forecast.TemperatureC > 30)
                    args.ElementStyle.ForeColor = System.Drawing.Color.Red;
            }
        }
        if (args.AreaType == DocumentExportAreaType.TotalFooter && 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>();

See Also

GridDocumentExportCustomizeCellEventArgs Class

GridDocumentExportCustomizeCellEventArgs Members

DevExpress.Blazor Namespace