React Tree Grid 一括編集とトランザクション
以下は、IgrTreeGrid コンポーネントに対して一括編集を有効にする方法の詳細な例です。
React Tree Grid 一括編集とトランザクションの例
次のサンプルは、IgrTreeGrid で BatchEditing が有効になっており、行編集が有効になっているシナリオを示しています。行編集全体を確定後にトランザクションが追加されるようにします。
トランザクション ステートは、すべての更新、追加、削除された行、そして最後のステートで構成されます。
使用方法
Tree Grid から BatchEditing を有効にする必要があります。
これにより、Transaction サービスの適切なインスタンスが IgrTreeGrid に提供されます。適切な IgrTransactionService は TransactionFactory を通じて提供されます。
一括編集を有効にした後、バインドされたデータ ソースと RowEditable を true に設定して IgrTreeGrid を定義し、バインドします:
以下のコード例は、HierarchicalTransactionService API (undo、redo、commit) の使用方法を示します。
<igx-grid #grid [batchEditing]="true" [data]="data" [primaryKey]="'ProductID'" width="100%" height="500px"
[rowEditable]="true">
</igx-grid>
<button igxButton [disabled]="!grid.transactions.canUndo" (click)="undo()">Undo</button>
<button igxButton [disabled]="!grid.transactions.canRedo" (click)="redo()">Redo</button>
<button igxButton [disabled]="grid.transactions.getAggregatedChanges(false).length < 1"
(click)="openCommitDialog(dialogGrid)">Commit</button>
<IgbGrid @ref="grid" BatchEditing="true" Data=data PrimaryKey=primaryKey Width="100%" Height="500px"
RowEditable="true">
</IgbGrid>
<button @onclick="OnCommitClick" disabled="@grid.transactions.getAggregatedChanges(false).length < 1">Commit</button>
<button @onclick="OnUndoClick" disabled="!@grid.transactions.canUndo">Undo</button>
<button @onclick="OnRedoClick" disabled="!@grid.transactions.canRedo">Redo</button>
@code {
private string primaryKey = "ProductID";
private IgbGrid grid;
protected override async Task OnInitializedAsync() => forecasts = await ForecastService.GetForecastAsync(DateTime.Now);
private void OnCommitClick(MouseEventArgs e)
{
this.grid.transactions.commit(this.data);
}
private void OnUndoClick(MouseEventArgs e)
{
this.grid.transactions.undo();
}
private void OnRedoClick(MouseEventArgs e)
{
this.grid.transactions.redo();
}
}
トランザクション API は編集の終了を処理しないので、自分で行う必要があります。そうしないと、IgrTreeGrid は編集モードのままになります。これを行う 1 つの方法は、それぞれのメソッドで EndEdit を呼び出すことです。
IgrTreeGrid 内の親ノードの削除にはいくつかの特徴があります。階層データを使用している場合、親を削除すると子も削除されます。フラットデータを使用している場合、IgrTreeGrid の CascadeOnDelete プロパティを使用して必要な動作を設定できます。このプロパティは、親が削除されたときに子レコードを削除するかどうかを示します (デフォルトでは true に設定されています)。
RowEditable プロパティを無効にすると IgrTreeGrid.rowEditable を変更してセル変更でトランザクションを作成し、UI で行編集オーバーレイを公開しません。
API リファレンス
IgrTreeGrid
Transactions
Our community is active and always welcoming to new ideas.