Skip to content

Commit 4dde0d5

Browse files
authored
fix(Table): not trigger OnAfterCancelSaveAsync on EditForm/InCell mode (#4817)
* fix: 修复 EditForm/InCell 模式下未触发 OnAfterCancelSaveAsync 回调问题 * chore: bump version 9.1.3-beta03 * test: 更新单元测试
1 parent dc943bb commit 4dde0d5

File tree

3 files changed

+89
-2
lines changed

3 files changed

+89
-2
lines changed

src/BootstrapBlazor/BootstrapBlazor.csproj

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
<Project Sdk="Microsoft.NET.Sdk.Razor">
22

33
<PropertyGroup>
4-
<Version>9.1.3-beta02</Version>
4+
<Version>9.1.3-beta03</Version>
55
</PropertyGroup>
66

77
<ItemGroup>

src/BootstrapBlazor/Components/Table/Table.razor.Toolbar.cs

+6-1
Original file line numberDiff line numberDiff line change
@@ -622,7 +622,7 @@ private async Task ShowDeleteToastAsync(string title, string content, ToastCateg
622622
/// 取消保存方法
623623
/// </summary>
624624
/// <returns></returns>
625-
protected void CancelSave()
625+
protected async Task CancelSave()
626626
{
627627
if (EditMode == EditMode.EditForm)
628628
{
@@ -635,6 +635,11 @@ protected void CancelSave()
635635
AddInCell = false;
636636
EditInCell = false;
637637
}
638+
639+
if (OnAfterCancelSaveAsync != null)
640+
{
641+
await OnAfterCancelSaveAsync();
642+
}
638643
}
639644

640645
/// <summary>

test/UnitTest/Components/TableTest.cs

+82
Original file line numberDiff line numberDiff line change
@@ -5507,6 +5507,88 @@ public async Task OnSaveAsync_Ok()
55075507
Assert.True(afterModify);
55085508
}
55095509

5510+
[Fact]
5511+
public async Task OnAfterCancelSaveAsync_EditForm()
5512+
{
5513+
var localizer = Context.Services.GetRequiredService<IStringLocalizer<Foo>>();
5514+
var items = Foo.GenerateFoo(localizer, 2);
5515+
var afterCancelSave = false;
5516+
var cut = Context.RenderComponent<BootstrapBlazorRoot>(pb =>
5517+
{
5518+
pb.AddChildContent<Table<Foo>>(pb =>
5519+
{
5520+
pb.Add(a => a.RenderMode, TableRenderMode.Table);
5521+
pb.Add(a => a.Items, items);
5522+
pb.Add(a => a.IsMultipleSelect, true);
5523+
pb.Add(a => a.ShowToolbar, true);
5524+
pb.Add(a => a.ShowExtendButtons, true);
5525+
pb.Add(a => a.EditMode, EditMode.EditForm);
5526+
pb.Add(a => a.OnAfterCancelSaveAsync, () =>
5527+
{
5528+
afterCancelSave = true;
5529+
return Task.CompletedTask;
5530+
});
5531+
pb.Add(a => a.TableColumns, foo => builder =>
5532+
{
5533+
builder.OpenComponent<TableColumn<Foo, string>>(0);
5534+
builder.AddAttribute(1, "Field", "Name");
5535+
builder.AddAttribute(2, "FieldExpression", Utility.GenerateValueExpression(foo, "Name", typeof(string)));
5536+
builder.CloseComponent();
5537+
});
5538+
});
5539+
});
5540+
5541+
// test edit button
5542+
var button = cut.FindAll("tbody tr button");
5543+
await cut.InvokeAsync(() => button[0].Click());
5544+
5545+
// 取消按钮
5546+
var cancelButton = cut.Find(".form-footer .btn-secondary");
5547+
await cut.InvokeAsync(() => cancelButton.Click());
5548+
Assert.True(afterCancelSave);
5549+
}
5550+
5551+
[Fact]
5552+
public async Task OnAfterCancelSaveAsync_InCell()
5553+
{
5554+
var localizer = Context.Services.GetRequiredService<IStringLocalizer<Foo>>();
5555+
var items = Foo.GenerateFoo(localizer, 2);
5556+
var afterCancelSave = false;
5557+
var cut = Context.RenderComponent<BootstrapBlazorRoot>(pb =>
5558+
{
5559+
pb.AddChildContent<Table<Foo>>(pb =>
5560+
{
5561+
pb.Add(a => a.RenderMode, TableRenderMode.Table);
5562+
pb.Add(a => a.Items, items);
5563+
pb.Add(a => a.IsMultipleSelect, true);
5564+
pb.Add(a => a.ShowToolbar, true);
5565+
pb.Add(a => a.ShowExtendButtons, true);
5566+
pb.Add(a => a.EditMode, EditMode.EditForm);
5567+
pb.Add(a => a.OnAfterCancelSaveAsync, () =>
5568+
{
5569+
afterCancelSave = true;
5570+
return Task.CompletedTask;
5571+
});
5572+
pb.Add(a => a.TableColumns, foo => builder =>
5573+
{
5574+
builder.OpenComponent<TableColumn<Foo, string>>(0);
5575+
builder.AddAttribute(1, "Field", "Name");
5576+
builder.AddAttribute(2, "FieldExpression", Utility.GenerateValueExpression(foo, "Name", typeof(string)));
5577+
builder.CloseComponent();
5578+
});
5579+
});
5580+
});
5581+
5582+
// test edit button
5583+
var button = cut.FindAll("tbody tr button");
5584+
await cut.InvokeAsync(() => button[0].Click());
5585+
5586+
// 取消按钮
5587+
button = cut.FindAll("tbody tr button");
5588+
await cut.InvokeAsync(() => button[1].Click());
5589+
Assert.True(afterCancelSave);
5590+
}
5591+
55105592
[Fact]
55115593
public async Task OnAfterCancelSaveAsync_Popup()
55125594
{

0 commit comments

Comments
 (0)