Blazor Grid 行の追加
Blazor Grid の Ignite UI for Blazor 行追加機能を使用すると、ユーザーは別のフォームやページに移動せずに新しいデータ レコードを入力して送信できます。IgbGrid では、インラインでの行追加と、CRUD 操作のための強力な API によってデータを操作できます。
グリッド テンプレートに、編集アクションを有効にした IgbActionStrip コンポーネントを追加します。次に行へホバーして表示されたボタンを使用し、最後に ALT + + を押して行追加 UI を表示します。
Blazor Grid 行の追加の例
行追加の使用
次に、データ ソースをバインドした IgbGrid を定義し、IgbGrid.RowEditable を true に設定します。さらに、編集アクションを有効にした IgbActionStrip コンポーネントを追加します。IgbGrid.AddRow 入力は、行追加 UI を表示するボタンの表示状態を制御します。
<IgbGrid AutoGenerate="false" Id="grid" Data="NwindData" PrimaryKey="ProductID" RowEditable="true">
<IgbColumn Field="ProductID" Header="Product ID" DataType="GridColumnDataType.Number"></IgbColumn>
<IgbColumn Field="ReorderLevel" Header="Reorder Level" DataType="GridColumnDataType.Number"></IgbColumn>
<IgbColumn Field="ProductName" Header="Product Name" DataType="GridColumnDataType.String"></IgbColumn>
<IgbColumn Field="UnitsInStock" Header="Units In Stock" DataType="GridColumnDataType.Number"></IgbColumn>
<IgbColumn Field="OrderDate" Header="Order Date" DataType="GridColumnDataType.Date"></IgbColumn>
<IgbColumn Field="Discontinued" Header="Discontinued" DataType="GridColumnDataType.Boolean"></IgbColumn>
<IgbActionStrip>
<IgbGridEditingActions AddRow="true"></IgbGridEditingActions>
</IgbActionStrip>
</IgbGrid>
注: プライマリ キーは行追加操作で必須です。
注: プライマリ キーを除くすべての列は、デフォルトで行追加 UI で編集可能です。特定の列の編集を無効にする場合、
IgbColumn.Editable列の入力を false に設定します。
注: [行の追加] ボタンの表示状態を制御する
IgbGridEditingActions入力では、アクション ストリップのコンテキスト (型:IgbRowType) を使用して、ボタンを表示するレコードを調整できます。
BaseTransactionService は IgbGrid に内部的に提供され、行の状態が送信またはキャンセルされるまで保留中のセル変更を保持します。
プログラムで行の追加を開始
IgbGrid では、2 つの公開メソッドを使って行追加 UI をプログラムから表示できます。1 つは UI を表示する位置の基準となる行 ID を受け取り、もう 1 つはインデックスで位置を指定します。これらのメソッドを使うことで、現在のデータ ビュー内の任意の位置に UI を表示できます。ページ変更や、たとえばフィルターで除外された行を指定することはサポートされません。
IgbGrid.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
}
IgbGrid.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 のデフォルト位置は、エンド ユーザーが [行の追加] ボタンをクリックした行の下にあります。
-
IgbGridがスクロールして、行追加 UI が自動的に完全に表示されます。 -
行追加 UI のオーバーレイは、スクロール中もその位置を維持します。
動作
行追加 UI は、エンド ユーザーに一貫した編集エクスペリエンスを提供するため、行編集 UI と同じ動作をします。詳細は Grid 行の編集 を参照してください。
行追加 UI から新しい行を追加した後、その位置や表示状態は IgbGrid のソート、フィルタリング、グループ化の状態によって決まります。これらの状態が適用されていない IgbGrid では、新しい行は末尾レコードとして表示されます。また、追加行が表示領域外にある場合は、IgbGrid のその位置までスクロールできるボタンを含むスナックバーが短時間表示されます。
キーボード ナビゲーション
-
ALT + + - 行を追加するために編集モードに入ります。
-
ESC は変更を送信せずに行追加モードを終了します。
-
TAB - 行の編集可能なセルから次のセルへフォーカスを移動、右端の編集可能なセルから [キャンセル] と [完了] ボタンへ移動します。[完了] ボタンからのナビゲーションは現在の編集行内で編集可能なセルへ移動します。
機能の統合
-
IgbGridのデータ ビューが変更されると、行追加の操作は停止します。エンド ユーザーが行った変更はすべて送信されます。データ ビューを変更する操作には、ソート、グループ化、フィルタリング、ページングなどが含まれますが、これらに限定されません。 -
行追加の操作が終了すると、集計が更新されます。同じことが、ソート、フィルタリングなど、他のデータ ビューに依存する機能にも当てはまります。
行追加オーバーレイのカスタマイズ
テキストのカスタマイズ
行追加オーバーレイのテキストは、IgbGridBaseDirective.RowAddTextTemplate を使用してカスタマイズできます。
<IgbGrid Data="data" PrimaryKey="ProductID" AutoGenerate="false" RowEditable="true" RowAddTextTemplate="addTextTemplate">
</IgbGrid>
@code {
private RenderFragment<IgbGridEmptyTemplateContext> addTextTemplate = (context) =>
{
return @<span>Adding Row</span>;
};
}
ボタンのカスタマイズ
行編集オーバーレイのボタンは、RowEditActions テンプレートでカスタマイズできます。
<IgbGrid Data="data" PrimaryKey="ProductID" AutoGenerate="false" RowEditable="true" RowEditActionsTemplateScript="rowEditActionsTemplate">
</IgbGrid>
//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 リファレンス
IgbGrid
その他のリソース
コミュニティに参加して新しいアイデアをご提案ください。