@if(ExportButtonDropdownTemplate != null)
{
-
- @ExportButtonDropdownTemplate
-
+ @ExportButtonDropdownTemplate(new TableExportContext
(this, Rows, BuildQueryPageOptions, ExportAsync))
}
else
{
@@ -211,7 +209,7 @@
{
@RenderExtendButtons(item)
}
- @foreach (var col in GetColumns())
+ @foreach (var col in GetVisibleColumns())
{
var cellClass = "";
string? value = null;
@@ -404,7 +402,7 @@ RenderFragment RenderColgroup => hasScroll =>
{
}
- @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 81d399b19661afeddbdefa1edaabcdb3832b2438..eb19c3b137949f8822c2089be11280be8603fd85 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 97238e8cdb6a7089b6ed9a4a3cc580f80b0bc0cf..748f88a507e9813a319cedfcf595164af1ece1d6 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 e4381f0ea76e9809e3cd5b013babf5f9a7574a6b..4822d117359f8a3be6a9a9481450dcdddd1cd74c 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++;
diff --git a/src/BootstrapBlazor/Components/Table/TableColumnContext.cs b/src/BootstrapBlazor/Components/Table/TableColumnContext.cs
index ca1edd54cf866d57105f1980d5c354c9eacc8e2b..54561235bb435ba3205771a861feec5388a94b0e 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; }
}
diff --git a/src/BootstrapBlazor/Components/Table/TableExportContext.cs b/src/BootstrapBlazor/Components/Table/TableExportContext.cs
new file mode 100644
index 0000000000000000000000000000000000000000..29e21c1907622f201ef56a8f4d226b2bea3095a2
--- /dev/null
+++ b/src/BootstrapBlazor/Components/Table/TableExportContext.cs
@@ -0,0 +1,61 @@
+// 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 Task ExportAsync() => ExportCallbackAsync();
+
+ ///
+ ///
+ ///
+ ///
+ public QueryPageOptions BuildQueryPageOptions() => OptionsBuilder();
+
+ private Func OptionsBuilder { get; }
+
+ private Func ExportCallbackAsync { get; }
+
+ ///
+ /// 构造函数
+ ///
+ /// ITable 实例
+ /// 行数据集合
+ /// ITable 实例当前条件生成方法
+ /// ITable 实例内置 Export 方法
+ public TableExportContext(ITable table, IEnumerable rows, Func optionsBuilder, Func exportAsync)
+ {
+ Table = table;
+ Rows = rows;
+ ExportCallbackAsync = exportAsync;
+ OptionsBuilder = optionsBuilder;
+ }
+}
diff --git a/src/Extensions/Components/BootstrapBlazor.TableExport/BootstrapBlazor.TableExport.csproj b/src/Extensions/Components/BootstrapBlazor.TableExport/BootstrapBlazor.TableExport.csproj
index b3c406f14a20bc9fc33c6f1847a39a2f4aa4e6ac..c5902de012c3c970f0e313740cf0914f9f77928d 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
-
+