Blazor 行のグループ化

Ignite UI for Blazor Data Table / Data Grid は、行を「固定ヘッダー」行グループにまとめることができます。これ機能は Microsoft Outlook の Group By 機能に似ています。独自の基準に基づいてデータを視覚的にグループ化する簡単な方法です。

Blazor 行のグループ化の例

複数のグループ

@code {
    private void OnGridCreated()
    {
        var state = new ColumnGroupDescription { Field = "Country", DisplayName = "Location" };
        var city = new ColumnGroupDescription { Field = "City", DisplayName = "" };
        var income = new ColumnGroupDescription { Field = "Income", DisplayName = "Income" };

        this.DataGridRef.GroupDescriptions.Add(state);
        this.DataGridRef.GroupDescriptions.Add(city);
        this.DataGridRef.GroupDescriptions.Add(income);
    }
}

階層グループ

GroupHeaderDisplayMode プロパティを使用すると、グループを階層化できます。デフォルトで、追加された各グループの説明が集計されます。GroupHeaderDisplayModeSplit に設定すると、DataGridGroupDescriptions プロパティで定義されたグループのセクション ヘッダーが作成されます。

<DataGrid Height="100%" Width="100%"
    @ref="DataGridRef"
    DataSource="DataSource"                      
    GroupHeaderDisplayMode="DataSourceSectionHeaderDisplayMode.Split" />

縮小可能なグループ

また、DataGrid は各グループ セクションに切り替えを表示して、エンドユーザーが IsGroupCollapsable プロパティでグループ化されたデータを展開または縮小できます。

<DataGrid @ref="DataGridRef" Height="100%" Width="100%"
    DataSource="DataSource"                      
    IsGroupCollapsable="true" />

まとめ

上記すべてのコード スニペットを以下のコード ブロックにまとめて、プロジェクトに簡単にコピーできます。

<DataGrid @ref="DataGridRef" Height="100%" Width="100%"
    DataSource="DataSource"
    GroupHeaderDisplayMode="DataSourceSectionHeaderDisplayMode.Split"                      
    IsGroupCollapsable="true" />

@code {
    private DataGrid grid;
    public DataGrid DataGridRef
    {
        get
        {
            return grid;
        }
        set
        {
            grid = value;
            OnGridCreated();
            StateHasChanged();
        }
    }

    private void OnGridCreated()
    {
        var state = new ColumnGroupDescription { Field = "Country", DisplayName = "Location" };
        var city = new ColumnGroupDescription { Field = "City", DisplayName = "" };
        var income = new ColumnGroupDescription { Field = "Income", DisplayName = "Income" };

        this.DataGridRef.GroupDescriptions.Add(state);
        this.DataGridRef.GroupDescriptions.Add(city);
        this.DataGridRef.GroupDescriptions.Add(income);
    }
}