diff --git a/src/BootstrapBlazor/BootstrapBlazor.csproj b/src/BootstrapBlazor/BootstrapBlazor.csproj index 0eb1cc90f15..44b52dd7b2e 100644 --- a/src/BootstrapBlazor/BootstrapBlazor.csproj +++ b/src/BootstrapBlazor/BootstrapBlazor.csproj @@ -1,7 +1,7 @@  - 9.6.2-beta04 + 9.6.2-beta05 diff --git a/src/BootstrapBlazor/Components/Table/Table.razor.Toolbar.cs b/src/BootstrapBlazor/Components/Table/Table.razor.Toolbar.cs index dca4728d55b..b3a1715cb66 100644 --- a/src/BootstrapBlazor/Components/Table/Table.razor.Toolbar.cs +++ b/src/BootstrapBlazor/Components/Table/Table.razor.Toolbar.cs @@ -470,7 +470,7 @@ public IEnumerable GetVisibleColumns() { // 不可见列 var items = VisibleColumns.Where(i => i.Visible); - return Columns.Where(i => !i.GetIgnoreExport() && !i.GetIgnore() && items.Any(v => v.Name == i.GetFieldName()) && ScreenSize >= i.ShownWithBreakPoint); + return Columns.Where(i => !i.GetIgnore() && items.Any(v => v.Name == i.GetFieldName()) && ScreenSize >= i.ShownWithBreakPoint); } 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) } private Task ExportAsync() => ExecuteExportAsync(() => OnExportAsync != null - ? OnExportAsync(new TableExportDataContext(TableExportType.Unknown, Rows, GetVisibleColumns(), BuildQueryPageOptions())) - : TableExport.ExportAsync(Rows, GetVisibleColumns())); + ? OnExportAsync(new TableExportDataContext(TableExportType.Unknown, Rows, GetExportColumns(), BuildQueryPageOptions())) + : TableExport.ExportAsync(Rows, GetExportColumns())); private Task ExportCsvAsync() => ExecuteExportAsync(() => OnExportAsync != null - ? OnExportAsync(new TableExportDataContext(TableExportType.Csv, Rows, GetVisibleColumns(), BuildQueryPageOptions())) - : TableExport.ExportCsvAsync(Rows, GetVisibleColumns())); + ? OnExportAsync(new TableExportDataContext(TableExportType.Csv, Rows, GetExportColumns(), BuildQueryPageOptions())) + : TableExport.ExportCsvAsync(Rows, GetExportColumns())); private Task ExportPdfAsync() => ExecuteExportAsync(() => OnExportAsync != null - ? OnExportAsync(new TableExportDataContext(TableExportType.Pdf, Rows, GetVisibleColumns(), BuildQueryPageOptions())) - : TableExport.ExportPdfAsync(Rows, GetVisibleColumns())); + ? OnExportAsync(new TableExportDataContext(TableExportType.Pdf, Rows, GetExportColumns(), BuildQueryPageOptions())) + : TableExport.ExportPdfAsync(Rows, GetExportColumns())); private Task ExportExcelAsync() => ExecuteExportAsync(() => OnExportAsync != null - ? OnExportAsync(new TableExportDataContext(TableExportType.Excel, Rows, GetVisibleColumns(), BuildQueryPageOptions())) - : TableExport.ExportExcelAsync(Rows, GetVisibleColumns())); + ? OnExportAsync(new TableExportDataContext(TableExportType.Excel, Rows, GetExportColumns(), BuildQueryPageOptions())) + : TableExport.ExportExcelAsync(Rows, GetExportColumns())); + + /// + /// Gets the export column collection. + /// + /// + public List GetExportColumns() => [.. GetVisibleColumns().Where(i => i.IgnoreWhenExport is not true)]; /// /// 获取当前 Table 选中的所有行数据 diff --git a/src/BootstrapBlazor/Extensions/ITableColumnExtensions.cs b/src/BootstrapBlazor/Extensions/ITableColumnExtensions.cs index 86631ffefb2..8144afa70c2 100644 --- a/src/BootstrapBlazor/Extensions/ITableColumnExtensions.cs +++ b/src/BootstrapBlazor/Extensions/ITableColumnExtensions.cs @@ -344,8 +344,6 @@ private static RenderFragment RenderContent(this ITableColumn col, string? text) internal static bool GetVisible(this ITableColumn col) => col.Visible ?? true; - internal static bool GetIgnoreExport(this ITableColumn col) => col.IgnoreWhenExport ?? false; - internal static bool GetShowCopyColumn(this ITableColumn col) => col.ShowCopyColumn ?? false; internal static bool GetShowTips(this ITableColumn col) => col.ShowTips ?? false; diff --git a/test/UnitTest/Components/TableTest.cs b/test/UnitTest/Components/TableTest.cs index 878c8391b06..b4f5431c0ee 100644 --- a/test/UnitTest/Components/TableTest.cs +++ b/test/UnitTest/Components/TableTest.cs @@ -6993,6 +6993,12 @@ public void ExportAsync_Ok() builder.AddAttribute(1, "Field", "Name"); builder.AddAttribute(2, "FieldExpression", Utility.GenerateValueExpression(foo, "Name", typeof(string))); builder.CloseComponent(); + + builder.OpenComponent>(0); + builder.AddAttribute(1, "Field", "Address"); + builder.AddAttribute(2, "FieldExpression", Utility.GenerateValueExpression(foo, "Address", typeof(string))); + builder.AddAttribute(3, "IgnoreWhenExport", true); + builder.CloseComponent(); }); }); }); @@ -7007,9 +7013,20 @@ public void ExportAsync_Ok() } var table = cut.FindComponent>(); + + // 可见列为 2 列 + var columns = table.Instance.GetVisibleColumns(); + Assert.Equal(2, columns.Count()); + + // 由于设置了 IgnoreWhenExport 为 true 所以导出时不包含 Address 列 + ITableExportDataContext? exportContext = null; table.SetParametersAndRender(pb => { - pb.Add(a => a.OnExportAsync, _ => Task.FromResult(true)); + pb.Add(a => a.OnExportAsync, context => + { + exportContext ??= context; + return Task.FromResult(true); + }); }); buttons = cut.FindAll(".dropdown-menu-end .dropdown-item"); @@ -7020,6 +7037,9 @@ public void ExportAsync_Ok() button.Click(); }); } + Assert.NotNull(exportContext); + Assert.Single(exportContext.Columns); + Assert.Equal("Name", exportContext.Columns.ElementAt(0).GetFieldName()); } [Fact] @@ -8208,37 +8228,6 @@ public void IsMarkupString_Ok() Assert.Equal("
<div>Address - Test</div>
", cells[1].InnerHtml); } - [Fact] - public void IgnoreWhenExport_Ok() - { - var items = new Foo[] { new() { Name = "Name", Address = "Address" } }; - var cut = Context.RenderComponent(pb => - { - pb.AddChildContent>(pb => - { - pb.Add(a => a.RenderMode, TableRenderMode.Table); - pb.Add(a => a.Items, items); - pb.Add(a => a.TableColumns, foo => builder => - { - builder.OpenComponent>(0); - builder.AddAttribute(1, "Field", "Name"); - builder.AddAttribute(2, "FieldExpression", Utility.GenerateValueExpression(foo, "Name", typeof(string))); - builder.CloseComponent(); - - builder.OpenComponent>(0); - builder.AddAttribute(1, "Field", "Address"); - builder.AddAttribute(2, "FieldExpression", Utility.GenerateValueExpression(foo, "Address", typeof(string))); - builder.AddAttribute(3, "IgnoreWhenExport", true); - builder.CloseComponent(); - }); - }); - }); - - var table = cut.FindComponent>(); - var columns = table.Instance.GetVisibleColumns(); - Assert.Single(columns); - } - [Fact] public void OnSelectedRows_Ok() {