From 0f06fae2644c634f7648cf5b3cca0bd031dde6a5 Mon Sep 17 00:00:00 2001 From: Argo-Asicotech Date: Fri, 6 Jan 2023 22:52:05 +0800 Subject: [PATCH 1/9] chore: bump version 7.2.0 --- .../BootstrapBlazor.TableExport.csproj | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Extensions/Components/BootstrapBlazor.TableExport/BootstrapBlazor.TableExport.csproj b/src/Extensions/Components/BootstrapBlazor.TableExport/BootstrapBlazor.TableExport.csproj index b3c406f14..c5902de01 100644 --- a/src/Extensions/Components/BootstrapBlazor.TableExport/BootstrapBlazor.TableExport.csproj +++ b/src/Extensions/Components/BootstrapBlazor.TableExport/BootstrapBlazor.TableExport.csproj @@ -1,13 +1,13 @@ - 7.1.1 + 7.2.0 Bootstrap Blazor WebAssembly wasm UI Components Table Export Bootstrap UI components extensions of export - + -- Gitee From 376a44ea8d86e9e8daac7938fc0169038bc0af42 Mon Sep 17 00:00:00 2001 From: Argo-Asicotech Date: Fri, 6 Jan 2023 23:11:47 +0800 Subject: [PATCH 2/9] =?UTF-8?q?doc:=20=E6=9B=B4=E7=BB=86=E8=B5=84=E6=BA=90?= =?UTF-8?q?=E6=96=87=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/BootstrapBlazor.Shared/Locales/zh.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/BootstrapBlazor.Shared/Locales/zh.json b/src/BootstrapBlazor.Shared/Locales/zh.json index 1220b25e2..060ecac81 100644 --- a/src/BootstrapBlazor.Shared/Locales/zh.json +++ b/src/BootstrapBlazor.Shared/Locales/zh.json @@ -5361,13 +5361,13 @@ }, "BootstrapBlazor.Shared.Samples.Table.TablesExport": { "H1": "Table 表格", - "H2": "通过设置 ShowExportButton 设置显示导出按钮,组件内置导出Excel功能", + "H2": "通过设置 ShowExportButton 参数显示导出按钮,组件内置导出 Excel 功能", "P1": "导出功能提供了导出回调方法 OnExportAsync 使用时可以通过提供自定义的导出方法进行数据导出,如果未提供数据导出方法,组件会根据注入的导出服务进行数据导出", "P7": "注入服务", "P8": "增加 BootstrapBlazor 组件", "P9": "增加 Table Excel 导出服务", "P11": "表格导出功能", - "P12": "通过设置 ShowExportButton 属性是否显示导出按钮,默认为false", + "P12": "通过设置 ShowExportButton=\"true\" 属性是否显示导出按钮,默认为false", "P13": "自定义导出方法", "P14": "通过设置 OnExportAsync 回调委托方法可自定义导出方法,不设置将使用组件内置导出函数", "P15": "自定义导出下拉框按钮", -- Gitee From f69e16f786176dd651b81c6a47dc7f4d558ff1d9 Mon Sep 17 00:00:00 2001 From: Argo-Asicotech Date: Fri, 6 Jan 2023 23:11:56 +0800 Subject: [PATCH 3/9] =?UTF-8?q?doc:=20=E6=9B=B4=E6=96=B0=E7=A4=BA=E4=BE=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/BootstrapBlazor.Shared/Samples/Table/TablesExport.razor | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/BootstrapBlazor.Shared/Samples/Table/TablesExport.razor b/src/BootstrapBlazor.Shared/Samples/Table/TablesExport.razor index d4d2d1aad..5920035ed 100644 --- a/src/BootstrapBlazor.Shared/Samples/Table/TablesExport.razor +++ b/src/BootstrapBlazor.Shared/Samples/Table/TablesExport.razor @@ -34,7 +34,7 @@ - + Date: Sat, 7 Jan 2023 10:26:25 +0800 Subject: [PATCH 4/9] =?UTF-8?q?feat:=20=E5=A2=9E=E5=8A=A0=20ITableExportCo?= =?UTF-8?q?ntext=20=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Components/Table/ITableExportContext.cs | 39 ++++++++++++ .../Components/Table/TableExportContext.cs | 59 +++++++++++++++++++ 2 files changed, 98 insertions(+) create mode 100644 src/BootstrapBlazor/Components/Table/ITableExportContext.cs create mode 100644 src/BootstrapBlazor/Components/Table/TableExportContext.cs diff --git a/src/BootstrapBlazor/Components/Table/ITableExportContext.cs b/src/BootstrapBlazor/Components/Table/ITableExportContext.cs new file mode 100644 index 000000000..45db249ec --- /dev/null +++ b/src/BootstrapBlazor/Components/Table/ITableExportContext.cs @@ -0,0 +1,39 @@ +// Copyright (c) Argo Zhang (argo@163.com). All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. +// Website: https://www.blazor.zone or https://argozhang.github.io/ + +namespace BootstrapBlazor.Components; + +/// +/// Table 导出数据上下文接口 +/// +/// +public interface ITableExportContext +{ + /// + /// 获得 Table 实例所有列集合 + /// + IEnumerable Columns { get; } + + /// + /// 获得 当前 Table 内置 ExportAsync 方法 + /// + Func ExportAsync { get; } + + /// + /// 获得 当前 行数据集合 + /// + IEnumerable Rows { get; } + + /// + /// 获得 当前 Table 内置查询条件方法 + /// + /// + QueryPageOptions BuildQueryPageOptions(); + + /// + /// 获得 当前 Table 显示列集合 + /// + /// + IEnumerable GetVisibleColumns(); +} diff --git a/src/BootstrapBlazor/Components/Table/TableExportContext.cs b/src/BootstrapBlazor/Components/Table/TableExportContext.cs new file mode 100644 index 000000000..898313c2a --- /dev/null +++ b/src/BootstrapBlazor/Components/Table/TableExportContext.cs @@ -0,0 +1,59 @@ +// Copyright (c) Argo Zhang (argo@163.com). All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. +// Website: https://www.blazor.zone or https://argozhang.github.io/ + +namespace BootstrapBlazor.Components; + +/// +/// +/// +internal class TableExportContext : ITableExportContext +{ + /// + /// 获得 Table 实例 + /// + private ITable Table { get; } + + /// + /// + /// + public IEnumerable Columns => Table.Columns; + + /// + /// + /// + public IEnumerable GetVisibleColumns() => Table.GetVisibleColumns(); + + /// + /// + /// + public IEnumerable Rows { get; } + + /// + /// + /// + public Func ExportAsync { get; } + + /// + /// + /// + /// + public QueryPageOptions BuildQueryPageOptions() => OptionsBuilder(); + + private Func OptionsBuilder { get; } + + /// + /// 构造函数 + /// + /// ITable 实例 + /// 行数据集合 + /// ITable 实例当前条件生成方法 + /// ITable 实例内置 Export 方法 + public TableExportContext(ITable table, IEnumerable rows, Func optionsBuilder, Func exportAsync) + { + Table = table; + Rows = rows; + ExportAsync = exportAsync; + OptionsBuilder = optionsBuilder; + } +} -- Gitee From 0d244073f5b38f1473a819f205cb2ab1519a8300 Mon Sep 17 00:00:00 2001 From: Argo-Asicotech Date: Sat, 7 Jan 2023 10:27:44 +0800 Subject: [PATCH 5/9] =?UTF-8?q?refactor:=20ITable=20=E6=8E=A5=E5=8F=A3?= =?UTF-8?q?=E5=A2=9E=E5=8A=A0=20GetVisibleColmuns=20=E6=96=B9=E6=B3=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/BootstrapBlazor/Components/Table/ITable.cs | 5 +++++ .../Components/Table/Table.razor | 18 ++++++++---------- .../Components/Table/Table.razor.Sort.cs | 8 ++++---- .../Components/Table/Table.razor.Toolbar.cs | 16 ++++++++++------ .../Components/Table/Table.razor.cs | 6 +++--- 5 files changed, 30 insertions(+), 23 deletions(-) diff --git a/src/BootstrapBlazor/Components/Table/ITable.cs b/src/BootstrapBlazor/Components/Table/ITable.cs index bb3320bbb..da8906ecd 100644 --- a/src/BootstrapBlazor/Components/Table/ITable.cs +++ b/src/BootstrapBlazor/Components/Table/ITable.cs @@ -14,6 +14,11 @@ public interface ITable /// List Columns { get; } + /// + /// 获得 ITable 实例配置的可见列集合 + /// + IEnumerable GetVisibleColumns(); + /// /// 获得 过滤条件集合 /// diff --git a/src/BootstrapBlazor/Components/Table/Table.razor b/src/BootstrapBlazor/Components/Table/Table.razor index a940225a8..30a99f971 100644 --- a/src/BootstrapBlazor/Components/Table/Table.razor +++ b/src/BootstrapBlazor/Components/Table/Table.razor @@ -77,7 +77,7 @@ } - @foreach (var col in GetColumns()) + @foreach (var col in GetVisibleColumns()) { @if (CheckShownWithBreakpoint(col)) { @@ -455,7 +453,7 @@ RenderFragment RenderHeader => hasScroll => { @RenderExtendButtonsHeader } - @foreach (var col in GetColumns()) + @foreach (var col in GetVisibleColumns()) { @if (CheckShownWithBreakpoint(col)) { @@ -550,7 +548,7 @@ RenderFragment RenderHeader => hasScroll =>
 
} - @foreach (var col in GetColumns()) + @foreach (var col in GetVisibleColumns()) { if (CheckShownWithBreakpoint(col)) { @@ -616,7 +614,7 @@ RenderFragment RenderRow => item => { @RenderRowExtendButtons(item) } - @foreach (var col in GetColumns()) + @foreach (var col in GetVisibleColumns()) { if (CheckShownWithBreakpoint(col)) { @@ -714,7 +712,7 @@ RenderFragment RenderPlaceHolderRow => {
} - @foreach (var col in GetColumns()) + @foreach (var col in GetVisibleColumns()) { } diff --git a/src/BootstrapBlazor/Components/Table/Table.razor.Sort.cs b/src/BootstrapBlazor/Components/Table/Table.razor.Sort.cs index 81d399b19..eb19c3b13 100644 --- a/src/BootstrapBlazor/Components/Table/Table.razor.Sort.cs +++ b/src/BootstrapBlazor/Components/Table/Table.razor.Sort.cs @@ -170,7 +170,7 @@ public partial class Table .AddClass($"left: {GetExtendButtonsColumnLeftMargin()}px;", FixedExtendButtonsColumn && IsExtendButtonsInRowHeader) .Build(); - private bool IsLastMultiColumn() => FixedMultipleColumn && (!FixedExtendButtonsColumn || !IsExtendButtonsInRowHeader) && !GetColumns().Any(i => i.Fixed); + private bool IsLastMultiColumn() => FixedMultipleColumn && (!FixedExtendButtonsColumn || !IsExtendButtonsInRowHeader) && !GetVisibleColumns().Any(i => i.Fixed); private ConcurrentDictionary LastFixedColumnCache { get; } = new(); @@ -185,7 +185,7 @@ public partial class Table return ret; }); - private bool IsLastExtendButtonColumn() => IsExtendButtonsInRowHeader && !GetColumns().Any(i => i.Fixed); + private bool IsLastExtendButtonColumn() => IsExtendButtonsInRowHeader && !GetVisibleColumns().Any(i => i.Fixed); private ConcurrentDictionary FirstFixedColumnCache { get; } = new(); @@ -200,7 +200,7 @@ public partial class Table return ret; }); - private bool IsFirstExtendButtonColumn() => !IsExtendButtonsInRowHeader && !GetColumns().Any(i => i.Fixed); + private bool IsFirstExtendButtonColumn() => !IsExtendButtonsInRowHeader && !GetVisibleColumns().Any(i => i.Fixed); private int GetExtendButtonsColumnLeftMargin() { @@ -239,7 +239,7 @@ public partial class Table private bool IsTail(ITableColumn col) { - var middle = Math.Floor(GetColumns().Count() * 1.0 / 2); + var middle = Math.Floor(GetVisibleColumns().Count() * 1.0 / 2); var index = Columns.IndexOf(col); return middle < index; } diff --git a/src/BootstrapBlazor/Components/Table/Table.razor.Toolbar.cs b/src/BootstrapBlazor/Components/Table/Table.razor.Toolbar.cs index 97238e8cd..748f88a50 100644 --- a/src/BootstrapBlazor/Components/Table/Table.razor.Toolbar.cs +++ b/src/BootstrapBlazor/Components/Table/Table.razor.Toolbar.cs @@ -79,7 +79,7 @@ public partial class Table /// 获得/设置 导出按钮下拉菜单模板 默认 null /// [Parameter] - public RenderFragment? ExportButtonDropdownTemplate { get; set; } + public RenderFragment>? ExportButtonDropdownTemplate { get; set; } /// /// 获得/设置 内置导出微软 Excel 按钮文本 默认 null 读取资源文件 @@ -255,15 +255,19 @@ public partial class Table /// /// 获得/设置 各列是否显示状态集合 /// - private List ColumnVisibles { get; } = new(); + private List VisibleColumns { get; } = new(); - private IEnumerable GetColumns() + /// + /// + /// + /// + public IEnumerable GetVisibleColumns() { - var items = ColumnVisibles.Where(i => i.Visible); + var items = VisibleColumns.Where(i => i.Visible); return Columns.Where(i => items.Any(v => v.Name == i.GetFieldName())); } - private bool GetColumnsListState(ITableColumn col) => ColumnVisibles.First(i => i.Name == col.GetFieldName()).Visible && ColumnVisibles.Count(i => i.Visible) == 1; + private bool GetColumnsListState(ITableColumn col) => VisibleColumns.First(i => i.Name == col.GetFieldName()).Visible && VisibleColumns.Count(i => i.Visible) == 1; private bool ShowAddForm { get; set; } @@ -815,7 +819,7 @@ public partial class Table else { // 通过 ITableExcelExport 服务导出数据 - ret = await ExcelExport.ExportAsync(Rows, GetColumns()); + ret = await ExcelExport.ExportAsync(Rows, GetVisibleColumns()); } option = new ToastOption diff --git a/src/BootstrapBlazor/Components/Table/Table.razor.cs b/src/BootstrapBlazor/Components/Table/Table.razor.cs index e4381f0ea..4822d1173 100644 --- a/src/BootstrapBlazor/Components/Table/Table.razor.cs +++ b/src/BootstrapBlazor/Components/Table/Table.razor.cs @@ -755,8 +755,8 @@ public partial class Table : ITable where TItem : class, new() private void InternalResetVisibleColumns(IEnumerable columns) { - ColumnVisibles.Clear(); - ColumnVisibles.AddRange(columns); + VisibleColumns.Clear(); + VisibleColumns.AddRange(columns); } /// @@ -1062,7 +1062,7 @@ public partial class Table : ITable where TItem : class, new() private int GetColumnCount() { - var colspan = GetColumns().Count(col => col.Visible); + var colspan = GetVisibleColumns().Count(col => col.Visible); if (IsMultipleSelect) { colspan++; -- Gitee From 5b3e610a8c9682bb0651ee7ff4b12d9d298925af Mon Sep 17 00:00:00 2001 From: Argo-Asicotech Date: Sat, 7 Jan 2023 10:28:06 +0800 Subject: [PATCH 6/9] =?UTF-8?q?refactor:=20=E6=9B=B4=E6=96=B0=20TableColum?= =?UTF-8?q?nContext=20=E7=B1=BB=E5=B1=9E=E6=80=A7=E5=8F=AA=E8=AF=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/BootstrapBlazor/Components/Table/TableColumnContext.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/BootstrapBlazor/Components/Table/TableColumnContext.cs b/src/BootstrapBlazor/Components/Table/TableColumnContext.cs index ca1edd54c..54561235b 100644 --- a/src/BootstrapBlazor/Components/Table/TableColumnContext.cs +++ b/src/BootstrapBlazor/Components/Table/TableColumnContext.cs @@ -24,10 +24,10 @@ public class TableColumnContext /// 获得/设置 行数据实例 /// [NotNull] - public TItem Row { get; set; } + public TItem Row { get; } /// /// 获得/设置 当前绑定字段数据实例 /// - public TValue Value { get; set; } + public TValue Value { get; } } -- Gitee From e5bb0b2eba6ef8daff200773f0a349ebee7dbf8e Mon Sep 17 00:00:00 2001 From: Argo-Asicotech Date: Sat, 7 Jan 2023 10:28:19 +0800 Subject: [PATCH 7/9] =?UTF-8?q?doc:=20=E6=9B=B4=E6=96=B0=20TableExport=20?= =?UTF-8?q?=E7=A4=BA=E4=BE=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Samples/Table/TablesExport.razor | 4 ++-- .../Samples/Table/TablesExport.razor.cs | 10 ++-------- 2 files changed, 4 insertions(+), 10 deletions(-) diff --git a/src/BootstrapBlazor.Shared/Samples/Table/TablesExport.razor b/src/BootstrapBlazor.Shared/Samples/Table/TablesExport.razor index 5920035ed..3b3d56a98 100644 --- a/src/BootstrapBlazor.Shared/Samples/Table/TablesExport.razor +++ b/src/BootstrapBlazor.Shared/Samples/Table/TablesExport.razor @@ -61,8 +61,8 @@ - - IEnumerable Columns { get; } - /// - /// 获得 当前 Table 内置 ExportAsync 方法 - /// - Func ExportAsync { get; } - /// /// 获得 当前 行数据集合 /// @@ -31,6 +26,11 @@ public interface ITableExportContext /// QueryPageOptions BuildQueryPageOptions(); + /// + /// 获得 当前 Table 内置 ExportAsync 方法 + /// + Task ExportAsync(); + /// /// 获得 当前 Table 显示列集合 /// diff --git a/src/BootstrapBlazor/Components/Table/TableExportContext.cs b/src/BootstrapBlazor/Components/Table/TableExportContext.cs index 898313c2a..29e21c190 100644 --- a/src/BootstrapBlazor/Components/Table/TableExportContext.cs +++ b/src/BootstrapBlazor/Components/Table/TableExportContext.cs @@ -32,7 +32,7 @@ internal class TableExportContext : ITableExportContext /// /// /// - public Func ExportAsync { get; } + public Task ExportAsync() => ExportCallbackAsync(); /// /// @@ -42,6 +42,8 @@ internal class TableExportContext : ITableExportContext private Func OptionsBuilder { get; } + private Func ExportCallbackAsync { get; } + /// /// 构造函数 /// @@ -53,7 +55,7 @@ internal class TableExportContext : ITableExportContext { Table = table; Rows = rows; - ExportAsync = exportAsync; + ExportCallbackAsync = exportAsync; OptionsBuilder = optionsBuilder; } } -- Gitee From 16f215b8bb16d2f966f2ad00e85d233797bd7917 Mon Sep 17 00:00:00 2001 From: Argo-Asicotech Date: Sat, 7 Jan 2023 13:45:20 +0800 Subject: [PATCH 9/9] chore: bump version 7.2.2-beta01 --- src/BootstrapBlazor/BootstrapBlazor.csproj | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/BootstrapBlazor/BootstrapBlazor.csproj b/src/BootstrapBlazor/BootstrapBlazor.csproj index 6f4f35260..75ce50683 100644 --- a/src/BootstrapBlazor/BootstrapBlazor.csproj +++ b/src/BootstrapBlazor/BootstrapBlazor.csproj @@ -1,7 +1,7 @@ - 7.2.1 + 7.2.2-beta01 -- Gitee