Blazor Hierarchical Grid 行の追加
Blazor Hierarchical Grid の Ignite UI for Blazor 行追加機能を使用すると、ユーザーは別のフォームやページに移動せずに新しいデータ レコードを入力して送信できます。IgbHierarchicalGrid では、インラインでの行追加と、CRUD 操作のための強力な API によってデータを操作できます。
グリッド テンプレートに、編集アクションを有効にした IgbActionStrip コンポーネントを追加します。次に行へホバーして表示されたボタンを使用し、最後に ALT + + を押して行追加 UI を表示します。
Blazor Hierarchical Grid 行の追加の例
行追加の使用
次に、データ ソースをバインドした IgbHierarchicalGrid を定義し、IgbHierarchicalGrid.RowEditable を true に設定します。さらに、編集アクションを有効にした IgbActionStrip コンポーネントを追加します。IgbHierarchicalGrid.AddRow 入力は、行追加 UI を表示するボタンの表示状態を制御します。
<IgbHierarchicalGrid AutoGenerate="false" Id="hGrid" PrimaryKey="Debut" RowEditable="true">
<IgbColumn Field="Artist" Header="Artist" DataType="GridColumnDataType.String"></IgbColumn>
<IgbColumn Field="HasGrammyAward" Header="Has Grammy Award" DataType="GridColumnDataType.Boolean"></IgbColumn>
<IgbColumn Field="Debut" Header="Debut" DataType="GridColumnDataType.Number"></IgbColumn>
<IgbColumn Field="GrammyNominations" Header="Grammy Nominations" DataType="GridColumnDataType.Number"></IgbColumn>
<IgbColumn Field="GrammyAwards" Header="Grammy Awards" DataType="GridColumnDataType.Number"></IgbColumn>
<IgbActionStrip>
<IgbGridEditingActions AddRow="true"></IgbGridEditingActions>
</IgbActionStrip>
<IgbRowIsland AutoGenerate="false" Key="Albums" PrimaryKey="USBillboard200" RowEditable="true">
<IgbColumn Field="Album" Header="Album" DataType="GridColumnDataType.Number"></IgbColumn>
<IgbColumn Field="LaunchDate" Header="Launch Date" DataType="GridColumnDataType.Date"></IgbColumn>
<IgbColumn Field="BillboardReview" Header="Billboard Review" DataType="GridColumnDataType.Number"></IgbColumn>
<IgbColumn Field="USBillboard200" Header="US Billboard 200" DataType="GridColumnDataType.Number"></IgbColumn>
<IgbColumn Field="GrammyAwards" Header="Grammy Awards" DataType="GridColumnDataType.Number"></IgbColumn>
<IgbRowIsland AutoGenerate="false" Key="Songs" PrimaryKey="Number" RowEditable="true">
<IgbColumn Field="Number" Header="Number" DataType="GridColumnDataType.String"></IgbColumn>
<IgbColumn Field="Title" DataType="GridColumnDataType.String"></IgbColumn>
<IgbColumn Field="Released" DataType="GridColumnDataType.Date"></IgbColumn>
<IgbColumn Field="Genre" DataType="GridColumnDataType.String"></IgbColumn>
<IgbActionStrip>
<IgbGridEditingActions AddRow="true"></IgbGridEditingActions>
</IgbActionStrip>
</IgbRowIsland>
<IgbActionStrip>
<IgbGridEditingActions AddRow="true"></IgbGridEditingActions>
</IgbActionStrip>
</IgbRowIsland>
</IgbHierarchicalGrid>
注: プライマリ キーは行追加操作で必須です。
注: プライマリ キーを除くすべての列は、デフォルトで行追加 UI で編集可能です。特定の列の編集を無効にする場合、
IgbColumn.Editable列の入力を false に設定します。
注: [行の追加] ボタンの表示状態を制御する
IgbGridEditingActions入力では、アクション ストリップのコンテキスト (型:IgbRowType) を使用して、ボタンを表示するレコードを調整できます。
BaseTransactionService は IgbHierarchicalGrid に内部的に提供され、行の状態が送信またはキャンセルされるまで保留中のセル変更を保持します。
プログラムで行の追加を開始
IgbHierarchicalGrid では、2 つの公開メソッドを使って行追加 UI をプログラムから表示できます。1 つは UI を表示する位置の基準となる行 ID を受け取り、もう 1 つはインデックスで位置を指定します。これらのメソッドを使うことで、現在のデータ ビュー内の任意の位置に UI を表示できます。ページ変更や、たとえばフィルターで除外された行を指定することはサポートされません。
IgbHierarchicalGrid.BeginAddRowById を使用すると、2 つの異なるパブリック メソッドを使用して、プログラムで行追加 UI を生成できます。1 つは UI が生成される行を指定するための行 ID を受け入れ、もう 1 つはインデックスによって機能します。これらのメソッドを使用して、現在のデータ ビュー内の任意の場所に UI を生成できます。ページの変更や、たとえばフィルターで除外された行の指定はサポートされていません。
@code {
await this.grid.BeginAddRowByIdAsync('ALFKI', false); // Spawns the add row UI under the row with PK 'ALFKI'
await this.grid.BeginAddRowByIdAsync(null, false); // Spawns the add row UI as the first record
}
IgbIgbHierarchicalGrid.beginAddRowByIndex メソッドも同様に機能しますが、UI が表示されるインデックスを指定する必要があります。指定可能な値の範囲は 0 からデータ ビューのサイズ - 1 までです。
@code {
await this.grid.BeginAddRowByIndexAsync(10); // Spawns the add row UI at index 10
await this.grid.BeginAddRowByIndexAsync(0); // Spawns the add row UI as the first record
}
位置
-
行追加 UI のデフォルト位置は、エンド ユーザーが [行の追加] ボタンをクリックした行の下にあります。
-
IgbHierarchicalGridがスクロールして、行追加 UI が自動的に完全に表示されます。 -
行追加 UI のオーバーレイは、スクロール中もその位置を維持します。
動作
行追加 UI は、エンド ユーザーに一貫した編集エクスペリエンスを提供するため、行編集 UI と同じ動作をします。詳細は Hierarchical Grid 行の編集 を参照してください。
行追加 UI から新しい行を追加した後、その位置や表示状態は IgbHierarchicalGrid のソート、フィルタリング、グループ化の状態によって決まります。これらの状態が適用されていない IgbHierarchicalGrid では、新しい行は末尾レコードとして表示されます。また、追加行が表示領域外にある場合は、IgbHierarchicalGrid のその位置までスクロールできるボタンを含むスナックバーが短時間表示されます。
キーボード ナビゲーション
-
ALT + + - 行を追加するために編集モードに入ります。
-
ESC は変更を送信せずに行追加モードを終了します。
-
TAB - 行の編集可能なセルから次のセルへフォーカスを移動、右端の編集可能なセルから [キャンセル] と [完了] ボタンへ移動します。[完了] ボタンからのナビゲーションは現在の編集行内で編集可能なセルへ移動します。
機能の統合
-
IgbHierarchicalGridのデータ ビューが変更されると、行追加の操作は停止します。エンド ユーザーが行った変更はすべて送信されます。データ ビューを変更する操作には、ソート、グループ化、フィルタリング、ページングなどが含まれますが、これらに限定されません。 -
行追加の操作が終了すると、集計が更新されます。同じことが、ソート、フィルタリングなど、他のデータ ビューに依存する機能にも当てはまります。
-
IgbHierarchicalGridの UI を生成すると、エンド ユーザーが [行の追加] ボタンをクリックした行に対して現在展開されている子レイアウトはすべて縮小されます。
行追加オーバーレイのカスタマイズ
テキストのカスタマイズ
行追加オーバーレイのテキストは、IgbGridBaseDirective.RowAddTextTemplate を使用してカスタマイズできます。
<IgbHierarchicalGrid Data="data" PrimaryKey="ProductID" AutoGenerate="false" RowEditable="true" RowAddTextTemplate="addTextTemplate">
</IgbHierarchicalGrid>
@code {
private RenderFragment<IgbGridEmptyTemplateContext> addTextTemplate = (context) =>
{
return @<span>Adding Row</span>;
};
}
ボタンのカスタマイズ
行編集オーバーレイのボタンは、RowEditActions テンプレートでカスタマイズできます。
<IgbHierarchicalGrid Data="data" PrimaryKey="ProductID" AutoGenerate="false" RowEditable="true" RowEditActionsTemplateScript="rowEditActionsTemplate">
</IgbHierarchicalGrid>
//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 リファレンス
IgbHierarchicalGrid
その他のリソース
コミュニティに参加して新しいアイデアをご提案ください。