Close
Angular React Web Components Blazor Blazor
Premium

Blazor Tree Grid 行の追加

IgbTreeGrid では、インライン行追加と Blazor 向け CRUD API により、便利な方法でデータを操作できます。グリッド テンプレートに編集アクションを有効化した IgbActionStrip を追加し、行へホバーして表示されるボタンを使用します。ALT + + で行追加 UI を表示し、ALT + SHIFT + + で選択行の子行追加 UI を表示できます。

Blazor Tree Grid 行の追加の例

行追加の使用

次に、データ ソースをバインドした IgbTreeGrid を定義し、IgbTreeGrid.RowEditable を true に設定します。さらに、編集アクションを有効にした IgbActionStrip コンポーネントを追加します。IgbTreeGrid.AddRow 入力は、行追加 UI を表示するボタンの表示状態を制御します。

<IgbTreeGrid AutoGenerate="false" Id="treegrid" PrimaryKey="ID" ForeignKey="ParentID" RowEditable="true">
    <IgbColumn Field="Name" Header="Name" DataType="GridColumnDataType.String"></IgbColumn>
    <IgbColumn Field="Title" Header="Title" DataType="GridColumnDataType.String"></IgbColumn>
    <IgbColumn Field="HireDate" Header="Hire Date" DataType="GridColumnDataType.Date"></IgbColumn>
    <IgbColumn Field="OnPTO" Header="On PTO" DataType="GridColumnDataType.Boolean"></IgbColumn>

    <IgbActionStrip>
        <IgbGridEditingActions AddRow="true"></IgbGridEditingActions>
    </IgbActionStrip>
</IgbTreeGrid>

: プライマリ キーは行追加操作で必須です。

: プライマリ キーを除くすべての列は、デフォルトで行追加 UI で編集可能です。特定の列の編集を無効にする場合、IgbColumn.Editable 列の入力を false に設定します。

: [行の追加] のボタンの表示状態を制御する IgbGridEditingActions 入力は、アクション ストリップ コンテキスト (タイプ IgbRowType) を使用して、ボタンが表示するレコードを調整できます。

BaseTransactionServiceIgbTreeGrid に内部的に提供され、行の状態が送信またはキャンセルされるまで保留中のセル変更を保持します。

プログラムで行の追加を開始

IgbTreeGrid では、2 つの公開メソッドを使って行追加 UI をプログラムから表示できます。1 つは UI を表示する位置の基準となる行 ID を受け取り、もう 1 つはインデックスで位置を指定します。これらのメソッドを使うことで、現在のデータ ビュー内の任意の位置に UI を表示できます。ページ変更や、たとえばフィルターで除外された行を指定することはサポートされません。

IgbTreeGrid.BeginAddRowById を使用する場合は、RowID (PK) で操作コンテキストとなる行を指定します。このメソッドは、エンド ユーザーが指定行の [行の追加] ボタンをクリックした場合と同様に動作し、その行の下に UI を表示します。2 番目のパラメーターで、行をコンテキスト行の子として追加するか兄弟として追加するかを制御できます。最初のパラメーターに null を渡すと、UI をグリッドの先頭行として表示できます。

@code {
    await this.treeGrid.BeginAddRowByIdAsync('ALFKI', true);  // Spawns the add row UI to add a child for the row with PK 'ALFKI'
    await this.treeGrid.BeginAddRowByIdAsync(null, false);     // Spawns the add row UI as the first record
}

IgbTreeGrid.BeginAddRowByIndex も同様に機能しますが、コンテキスト行をインデックスで指定します。

@code {
    await this.treeGrid.BeginAddRowByIndexAsync(10, true);   // Spawns the add row UI to add a child for the row at index 10
    await this.treeGrid.BeginAddRowByIndexAsync(0);    // Spawns the add row UI as the first record
}

位置

  • 行追加 UI のデフォルト位置は、エンド ユーザーが [行の追加] ボタンをクリックした行の下にあります。

  • IgbTreeGrid がスクロールして、行追加 UI が自動的に完全に表示されます。

  • 行追加 UI のオーバーレイは、スクロール中もその位置を維持します。

動作

行追加 UI は、エンド ユーザーに一貫した編集エクスペリエンスを提供するため、行編集 UI と同じ動作をします。詳細は Tree Grid 行の編集 を参照してください。

行追加 UI から新しい行を追加した後、その位置や表示状態は IgbTreeGrid のソート、フィルタリング、グループ化の状態によって決まります。これらの状態が適用されていない IgbTreeGrid では、新しい行は末尾レコードとして表示されます。また、追加行が表示領域外にある場合は、IgbTreeGrid のその位置までスクロールできるボタンを含むスナックバーが短時間表示されます。

キーボード ナビゲーション

  • ALT + + - 行を追加するために編集モードに入ります。

  • ALT + SHIFT + + - 子を追加するために編集モードに入ります。

  • ESC は変更を送信せずに行追加モードを終了します。

  • TAB - 行の編集可能なセルから次のセルへフォーカスを移動、右端の編集可能なセルから [キャンセル] と [完了] ボタンへ移動します。[完了] ボタンからのナビゲーションは現在の編集行内で編集可能なセルへ移動します。

機能の統合

  • IgbTreeGrid のデータ ビューが変更されると、行追加の操作は停止します。エンド ユーザーが行った変更はすべて送信されます。データ ビューを変更する操作には、ソート、グループ化、フィルタリング、ページングなどが含まれますが、これらに限定されません。

  • 行追加の操作が終了すると、集計が更新されます。同じことが、ソート、フィルタリングなど、他のデータ ビューに依存する機能にも当てはまります。

行追加オーバーレイのカスタマイズ

テキストのカスタマイズ

行追加オーバーレイのテキストは、IgbGridBaseDirective.RowAddTextTemplate を使用してカスタマイズできます。

<IgbTreeGrid Data="data" PrimaryKey="ProductID" AutoGenerate="false" RowEditable="true" RowAddTextTemplate="addTextTemplate">
</IgbTreeGrid>

@code {
    private RenderFragment<IgbGridEmptyTemplateContext> addTextTemplate = (context) =>
    {
        return @<span>Adding Row</span>;
    };
}

ボタンのカスタマイズ

行編集オーバーレイのボタンは、RowEditActions テンプレートでカスタマイズできます。

<IgbTreeGrid Data="data" PrimaryKey="ProductID" AutoGenerate="false" RowEditable="true" RowEditActionsTemplateScript="rowEditActionsTemplate">
</IgbTreeGrid>
//In JavaScript:
igRegisterScript("rowEditActionsTemplate", (endRowEdit) => {
    var html = window.igTemplating.html;
    return html`<div class="row-actions">
        <button @click="${evt => endRowEdit.implicit(false, evt)}">Cancel</button>
        <button @click="${evt => endRowEdit.implicit(true, evt)}">Apply</button>
    </div>`
}, false);

: RowEditActions テンプレートを使用すると、編集オーバーレイと追加オーバーレイの両方で編集アクション ボタンが変更されます。

スタイル設定

行追加 UI は、IgbActionStrip の編集アクション ボタン、編集エディターとオーバーレイ、さらに新規追加行へスクロールするためのスナックバーで構成されています。これらのスタイル設定は、各トピックのガイドを参照してください。

API リファレンス

IgbTreeGrid

その他のリソース

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