IgbGrid において、特定の列をユーザーに表示しながらも、エクスポート時にはその列を除外する方法についてご紹介します。
例として、ユーザーのアイコン画像など、表示は必要ですが、エクスポートしたデータファイルには画像データのエクスポートには対応していないので、画像列ごとエクスポートの対象外にしたい場合があります。
IgbGrid コンポーネントでは、エクスポートプロセスを制御するイベントハンドラを使用して、特定の列をエクスポートから除外することができます。

IgbGrid の設定

例えば、アイコンなどの画像はグリッドに表示することはできますが、IgbGrid はアイコンなどの画像ファイルのエクスポートをサポートしていないため、これらのアイコン列をエクスポートから除外することがあるとします。
IgbGridでは、エクスポートプロセスを制御するイベントハンドラを使用して、特定の列を除外することができます。

<IgbGrid ....>
    <IgbGridToolbar>
        <IgbGridToolbarActions>
            <IgbGridToolbarExporter ....
                    ExportStartedScript="OnExportStarted"
                    ExportEndedScript="OnExportEnded">
            </IgbGridToolbarExporter>
        </IgbGridToolbarActions>
    </IgbGridToolbar>
    <IgbColumn Field="@nameof(Person.Name)" Header="氏名"></IgbColumn>
    <IgbColumn Field="@nameof(Person.Age)" Header="年齢" DataType="GridColumnDataType.Number"></IgbColumn>
    <IgbColumn Field="@nameof(Person.JobTitle)" Header="職種"></IgbColumn>
    <IgbColumn Field="@nameof(Person.Image)" Header="アイコン" DataType="GridColumnDataType.Image"></IgbColumn>
</IgbGrid>

イベントハンドラの登録

OnExportStarted と OnExportEnded イベントハンドラを登録し、エクスポートが開始される前と終了した後に、アイコン列 ( “Image” ) の表示 / 非表示を制御します。

  • OnExportStarted
    エクスポートプロセスが開始すると、OnExportStartedイベントが発生し、画像列を非表示に設定してエクスポートから除外します
  • OnExportEnded
    エクスポートが完了すると、OnExportEndedイベントが発生し、画像列を再表示します
igRegisterScript("OnExportStarted", (e) => {
    const grid = e.target.grid;
    const imageColumn = grid.columnList.find(c => c.field === "Image");
    imageColumn.hidden = true;
}, false);

igRegisterScript("OnExportEnded", (e) => {
    const grid = e.target.grid;
    const imageColumn = grid.columnList.find(c => c.field === "Image");
    imageColumn.hidden = false;
}, false);

実行結果

このような方法で、エクスポートプロセス中に特定の列をシームレスに除外することができます。
実際にエクスポートした Excel ファイルは以下のようになります。

関連ドキュメント

Tagged:

製品について

Ignite UI for Blazor