Skip to content

Commit 051fdba

Browse files
authored
refactor(Table): update logic for IgnoreWhenExport parameter (#6018)
* revert: 撤销对可见列逻辑更改 * feat: 增加导出时过滤列逻辑 * chore: bump version 9.6.2-beta05 * refactor: 增加 GetExportColumns 扩展方法 * fix: 修复条件不正确问题 * test: 增加单元测试
1 parent e957946 commit 051fdba

File tree

4 files changed

+37
-44
lines changed

4 files changed

+37
-44
lines changed

src/BootstrapBlazor/BootstrapBlazor.csproj

Lines changed: 1 addition & 1 deletion
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.6.2-beta04</Version>
4+
<Version>9.6.2-beta05</Version>
55
</PropertyGroup>
66

77
<ItemGroup>

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

Lines changed: 15 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -470,7 +470,7 @@ public IEnumerable<ITableColumn> GetVisibleColumns()
470470
{
471471
// 不可见列
472472
var items = VisibleColumns.Where(i => i.Visible);
473-
return Columns.Where(i => !i.GetIgnoreExport() && !i.GetIgnore() && items.Any(v => v.Name == i.GetFieldName()) && ScreenSize >= i.ShownWithBreakPoint);
473+
return Columns.Where(i => !i.GetIgnore() && items.Any(v => v.Name == i.GetFieldName()) && ScreenSize >= i.ShownWithBreakPoint);
474474
}
475475

476476
private bool GetColumnsListState(ColumnVisibleItem item) => VisibleColumns.Find(i => i.Name == item.Name) is { Visible: true } && VisibleColumns.Where(i => i.Visible).DistinctBy(i => i.Name).Count(i => i.Visible) == 1;
@@ -1183,20 +1183,26 @@ private ToastOption GetToastOption(string title)
11831183
}
11841184

11851185
private Task ExportAsync() => ExecuteExportAsync(() => OnExportAsync != null
1186-
? OnExportAsync(new TableExportDataContext<TItem>(TableExportType.Unknown, Rows, GetVisibleColumns(), BuildQueryPageOptions()))
1187-
: TableExport.ExportAsync(Rows, GetVisibleColumns()));
1186+
? OnExportAsync(new TableExportDataContext<TItem>(TableExportType.Unknown, Rows, GetExportColumns(), BuildQueryPageOptions()))
1187+
: TableExport.ExportAsync(Rows, GetExportColumns()));
11881188

11891189
private Task ExportCsvAsync() => ExecuteExportAsync(() => OnExportAsync != null
1190-
? OnExportAsync(new TableExportDataContext<TItem>(TableExportType.Csv, Rows, GetVisibleColumns(), BuildQueryPageOptions()))
1191-
: TableExport.ExportCsvAsync(Rows, GetVisibleColumns()));
1190+
? OnExportAsync(new TableExportDataContext<TItem>(TableExportType.Csv, Rows, GetExportColumns(), BuildQueryPageOptions()))
1191+
: TableExport.ExportCsvAsync(Rows, GetExportColumns()));
11921192

11931193
private Task ExportPdfAsync() => ExecuteExportAsync(() => OnExportAsync != null
1194-
? OnExportAsync(new TableExportDataContext<TItem>(TableExportType.Pdf, Rows, GetVisibleColumns(), BuildQueryPageOptions()))
1195-
: TableExport.ExportPdfAsync(Rows, GetVisibleColumns()));
1194+
? OnExportAsync(new TableExportDataContext<TItem>(TableExportType.Pdf, Rows, GetExportColumns(), BuildQueryPageOptions()))
1195+
: TableExport.ExportPdfAsync(Rows, GetExportColumns()));
11961196

11971197
private Task ExportExcelAsync() => ExecuteExportAsync(() => OnExportAsync != null
1198-
? OnExportAsync(new TableExportDataContext<TItem>(TableExportType.Excel, Rows, GetVisibleColumns(), BuildQueryPageOptions()))
1199-
: TableExport.ExportExcelAsync(Rows, GetVisibleColumns()));
1198+
? OnExportAsync(new TableExportDataContext<TItem>(TableExportType.Excel, Rows, GetExportColumns(), BuildQueryPageOptions()))
1199+
: TableExport.ExportExcelAsync(Rows, GetExportColumns()));
1200+
1201+
/// <summary>
1202+
/// Gets the export column collection.
1203+
/// </summary>
1204+
/// <returns></returns>
1205+
public List<ITableColumn> GetExportColumns() => [.. GetVisibleColumns().Where(i => i.IgnoreWhenExport is not true)];
12001206

12011207
/// <summary>
12021208
/// 获取当前 Table 选中的所有行数据

src/BootstrapBlazor/Extensions/ITableColumnExtensions.cs

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -344,8 +344,6 @@ private static RenderFragment RenderContent(this ITableColumn col, string? text)
344344

345345
internal static bool GetVisible(this ITableColumn col) => col.Visible ?? true;
346346

347-
internal static bool GetIgnoreExport(this ITableColumn col) => col.IgnoreWhenExport ?? false;
348-
349347
internal static bool GetShowCopyColumn(this ITableColumn col) => col.ShowCopyColumn ?? false;
350348

351349
internal static bool GetShowTips(this ITableColumn col) => col.ShowTips ?? false;

test/UnitTest/Components/TableTest.cs

Lines changed: 21 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -6993,6 +6993,12 @@ public void ExportAsync_Ok()
69936993
builder.AddAttribute(1, "Field", "Name");
69946994
builder.AddAttribute(2, "FieldExpression", Utility.GenerateValueExpression(foo, "Name", typeof(string)));
69956995
builder.CloseComponent();
6996+
6997+
builder.OpenComponent<TableColumn<Foo, string>>(0);
6998+
builder.AddAttribute(1, "Field", "Address");
6999+
builder.AddAttribute(2, "FieldExpression", Utility.GenerateValueExpression(foo, "Address", typeof(string)));
7000+
builder.AddAttribute(3, "IgnoreWhenExport", true);
7001+
builder.CloseComponent();
69967002
});
69977003
});
69987004
});
@@ -7007,9 +7013,20 @@ public void ExportAsync_Ok()
70077013
}
70087014

70097015
var table = cut.FindComponent<Table<Foo>>();
7016+
7017+
// 可见列为 2 列
7018+
var columns = table.Instance.GetVisibleColumns();
7019+
Assert.Equal(2, columns.Count());
7020+
7021+
// 由于设置了 IgnoreWhenExport 为 true 所以导出时不包含 Address 列
7022+
ITableExportDataContext<Foo>? exportContext = null;
70107023
table.SetParametersAndRender(pb =>
70117024
{
7012-
pb.Add(a => a.OnExportAsync, _ => Task.FromResult(true));
7025+
pb.Add(a => a.OnExportAsync, context =>
7026+
{
7027+
exportContext ??= context;
7028+
return Task.FromResult(true);
7029+
});
70137030
});
70147031

70157032
buttons = cut.FindAll(".dropdown-menu-end .dropdown-item");
@@ -7020,6 +7037,9 @@ public void ExportAsync_Ok()
70207037
button.Click();
70217038
});
70227039
}
7040+
Assert.NotNull(exportContext);
7041+
Assert.Single(exportContext.Columns);
7042+
Assert.Equal("Name", exportContext.Columns.ElementAt(0).GetFieldName());
70237043
}
70247044

70257045
[Fact]
@@ -8208,37 +8228,6 @@ public void IsMarkupString_Ok()
82088228
Assert.Equal("<div class=\"table-cell\">&lt;div&gt;Address - Test&lt;/div&gt;</div>", cells[1].InnerHtml);
82098229
}
82108230

8211-
[Fact]
8212-
public void IgnoreWhenExport_Ok()
8213-
{
8214-
var items = new Foo[] { new() { Name = "Name", Address = "Address" } };
8215-
var cut = Context.RenderComponent<BootstrapBlazorRoot>(pb =>
8216-
{
8217-
pb.AddChildContent<Table<Foo>>(pb =>
8218-
{
8219-
pb.Add(a => a.RenderMode, TableRenderMode.Table);
8220-
pb.Add(a => a.Items, items);
8221-
pb.Add(a => a.TableColumns, foo => builder =>
8222-
{
8223-
builder.OpenComponent<TableColumn<Foo, string>>(0);
8224-
builder.AddAttribute(1, "Field", "Name");
8225-
builder.AddAttribute(2, "FieldExpression", Utility.GenerateValueExpression(foo, "Name", typeof(string)));
8226-
builder.CloseComponent();
8227-
8228-
builder.OpenComponent<TableColumn<Foo, string>>(0);
8229-
builder.AddAttribute(1, "Field", "Address");
8230-
builder.AddAttribute(2, "FieldExpression", Utility.GenerateValueExpression(foo, "Address", typeof(string)));
8231-
builder.AddAttribute(3, "IgnoreWhenExport", true);
8232-
builder.CloseComponent();
8233-
});
8234-
});
8235-
});
8236-
8237-
var table = cut.FindComponent<Table<Foo>>();
8238-
var columns = table.Instance.GetVisibleColumns();
8239-
Assert.Single(columns);
8240-
}
8241-
82428231
[Fact]
82438232
public void OnSelectedRows_Ok()
82448233
{

0 commit comments

Comments
 (0)