@page "/Box/CheckDDD"
@using Radzen.Blazor
@using System.ComponentModel

<style>

    .total-footer {
        font-weight: 600;
        color: var(--rz-secondary);
        padding: 8px 12px;
        background-color: var(--rz-base-100);
        border-top: 2px solid var(--rz-border-default);
    }
</style>
@* <RadzenDataGrid @ref="grid" Data="@summaryData" TItem="dynamic"
                AllowPaging="true" PageSize="5">
    <Columns>
        <RadzenDataGridColumn Title="商品品类" Property="Category" Width="200px" />
        <RadzenDataGridColumn Title="销售总量" TextAlign="TextAlign.Right">
            <Template Context="group">
                <span class="font-bold">@group.TotalQuantity.ToString("N0")</span>
            </Template>
            <FooterTemplate>
                <div class="total-footer">
                    全品类合计: @orders.Sum(o => o.Quantity).ToString("N0")
                </div>
            </FooterTemplate>
        </RadzenDataGridColumn>
    </Columns>
</RadzenDataGrid> *@

@code {
    RadzenDataGrid<dynamic> grid;
    List<Order> orders = new();
    IEnumerable<dynamic> summaryData;

    protected override void OnInitialized()
    {
        // 模拟数据
        orders = new List<Order> {
            new Order { Category = "电子产品", Quantity = 15 },
            new Order { Category = "电子产品", Quantity = 8 },
            new Order { Category = "家居用品", Quantity = 23 }
        };

        CalculateSummary();
    }

    void CalculateSummary()
    {
        summaryData = orders
            .GroupBy(o => o.Category)
            .Select(g => new
            {
                Category = g.Key,
                TotalQuantity = g.Sum(x => x.Quantity)
            }).ToList();
    }

    public class Order : INotifyPropertyChanged
    {
        public event PropertyChangedEventHandler PropertyChanged;

        public string Category { get; set; }
        private int _quantity;
        public int Quantity
        {
            get => _quantity;
            set
            {
                _quantity = value;
                PropertyChanged?.Invoke(this,
                    new PropertyChangedEventArgs(nameof(Quantity)));
            }
        }
    }
}
