Grid の列の並べ替えと移動

    Blazor Grid の Ignite UI for Blazor 列移動機能を使用すると、列をすばやく簡単に並べ替えることができます。これは、列移動 API を使用するか、マウスまたはタッチ ジェスチャを使用してヘッダーを別の位置にドラッグ アンド ドロップすることによって実行できます。Blazor Grid では、ピン固定された列とピン固定されていない列、および複数列ヘッダーに対しても列の移動を有効にすることができます。

    [!Note] 列と列グループ間の順序変更は、それらが階層の同じレベルにあり、両方が同じグループにある場合にのみ許可されます。列/列グループが最上位の列である場合、列/列グループ間を移動できます。

    [!Note] 列ヘッダーがテンプレート化され、対応する列がグループ化可能である場合、テンプレート化された要素は draggable 属性を false に設定する必要があります。

    [!Note] ピン固定領域が最大幅 (IgbGrid 幅合計の 80%) を超えた場合、ドロップ操作が禁止されていてピン固定ができないことをヒントの表示でエンドユーザーに通知します。つまり、ピン固定領域に列をドロップできません。

        public RenderFragment<IgbColumnTemplateContext> headerTemplate => (context) =>
        {
            return @<IgbIcon Collection="fas" IconName="fa-thumbtack" draggable="false" @onclick="() => onClick()"></IgbIcon>;
        };
    

    Blazor Grid 列移動概要の例

    概要

    列移動機能は各列レベルで有効にできます。つまり、IgbGrid に移動可能な列または移動不可の列の両方を含むことができます。IgbGridMoving 入力によって制御されます。

    <IgbGrid Moving=true></IgbGrid>
    

    API

    ドラッグアンドドロップ機能に加えて、列の移動機能には、プログラムで列を移動/並べ替えできる API メソッドも用意されています。

    MoveColumn - 列を別の列 (ターゲット) の前または後に移動します。最初のパラメーターは移動する列で、2 番目のパラメーターはターゲット列です。オプションの 3 番目のパラメーター Position (DropPosition 値を表す) でターゲット列の前または後に列を配置するかどうかを決定します。

        public async void HandleClick()
        {
            IgbColumn Col1 = await this.grid.GetColumnByVisibleIndexAsync(0);
            IgbColumn Col2 = await this.grid.GetColumnByVisibleIndexAsync(1);
            this.Grid.MoveColumn(Col1,Col2, DropPosition.AfterDropTarget);
        }
    

    Move - 列を指定した表示インデックスに移動します。渡されたインデックス パラメーターが無効である場合 (負である/列数を超える場合)、または列がこのインデックスに移動できない場合 (別のグループ内にある場合)、操作は実行されません。

        public async void HandleClick()
        {
            IgbColumn Col1 = await this.grid.GetColumnByVisibleIndexAsync(0);
            this.Col1.Move(3);
        }
    

    列移動機能を使用する場合、操作が成功すると、ColumnMovingEnd イベントが発生することに注意してください。また、ドラッグアンドドロップ機能と比較して、列移動機能を使用するために Moving プロパティを true に設定する必要がないことにも注意してください。

    イベント

    列のドラッグアンドドロップ操作を可能にする列移動に関連するイベントが複数あります。ColumnMovingStartColumnMoving、および ColumnMovingEnd です。

    IgbGridColumnMovingEnd イベントを処理し、列が新しい位置にドロップされたときにカスタム ロジックを実装できます。たとえば、以下のスニペットでは、Change On Year(%) 列の後に Category のドロップをキャンセルできます。

        <IgbGrid ShowGroupArea="true" @ref='Grid' Width="100%" Height="100%"
                 AllowFiltering=true
                 FilterMode="FilterMode.ExcelStyleFilter"
                 AutoGenerate=true
                 Data=northwindEmployees
                 DisplayDensity="DisplayDensity.Compact"
                 Moving="true"
                 ColumnMovingEndScript='onColumnMovingEnd'>
        </IgbGrid>
    
    igRegisterScript("onColumnMovingEnd", (event) => {
        if (event.detail.source.field === "Category" && event.detail.target.field === "Change On Year(%)") {
            event.detail.cancel = true;
        }
    }, false);
    

    スタイル設定

    定義済みのテーマに加えて、利用可能な CSS プロパティのいくつかを設定することで、グリッドをさらにカスタマイズできます。

    色を変更したい場合は、最初にグリッドのクラスを設定する必要があります:

    <IgbGrid class="grid"></IgbGrid>
    

    次に、関連する CSS プロパティをこのクラスに設定します:

    .grid {
        --ig-grid-ghost-header-text-color: #f4d45c;
        --ig-grid-ghost-header-background: #ad9d9d;
        --ig-grid-ghost-header-icon-color: #f4d45c;
    }
    

    デモ

    API リファレンス

    その他のリソース

    コミュニティに参加して新しいアイデアをご提案ください。