From a71f49a17c24104824fed55d42157992acbd3f87 Mon Sep 17 00:00:00 2001 From: Argo Zhang Date: Thu, 27 Mar 2025 10:10:51 +0800 Subject: [PATCH 01/13] =?UTF-8?q?doc:=20=E6=9B=B4=E6=96=B0=E8=B5=84?= =?UTF-8?q?=E6=BA=90=E6=96=87=E4=BB=B6=E9=94=AE=E5=80=BC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/BootstrapBlazor.Server/Locales/en-US.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/BootstrapBlazor.Server/Locales/en-US.json b/src/BootstrapBlazor.Server/Locales/en-US.json index ffc0befac1c..83e167868de 100644 --- a/src/BootstrapBlazor.Server/Locales/en-US.json +++ b/src/BootstrapBlazor.Server/Locales/en-US.json @@ -4885,7 +4885,7 @@ "Affix": "Affix", "Watermark": "Watermark", "OctIcon": "Oct Icons", - "UniverIcons": "Univer Icons", + "UniverIcon": "Univer Icons", "Typed": "Typed", "UniverSheet": "UniverSheet" }, From 0c234b2bf2e40b0819ea4f2f893f80ece161cc97 Mon Sep 17 00:00:00 2001 From: Argo Zhang Date: Thu, 27 Mar 2025 10:24:02 +0800 Subject: [PATCH 02/13] =?UTF-8?q?refactor:=20=E6=9B=B4=E6=94=B9=E5=8F=98?= =?UTF-8?q?=E9=87=8F=E5=8F=AF=E8=A7=81=E6=80=A7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Components/Table/Table.razor.Edit.cs | 4 ++-- .../Components/Table/Table.razor.Toolbar.cs | 4 ++-- .../Components/Table/Table.razor.TreeNode.cs | 2 +- .../Components/Table/Table.razor.cs | 14 +++++--------- 4 files changed, 10 insertions(+), 14 deletions(-) diff --git a/src/BootstrapBlazor/Components/Table/Table.razor.Edit.cs b/src/BootstrapBlazor/Components/Table/Table.razor.Edit.cs index 7b60864524d..29e55f1ca13 100644 --- a/src/BootstrapBlazor/Components/Table/Table.razor.Edit.cs +++ b/src/BootstrapBlazor/Components/Table/Table.razor.Edit.cs @@ -484,7 +484,7 @@ protected async Task QueryData(bool triggerByPagination = false) else { ResetSelectedRows(Items); - RowsCache = null; + _rowsCache = null; } return; @@ -513,7 +513,7 @@ async Task OnQuery(QueryPageOptions queryOption) } // 更新数据后清除缓存防止新数据不显示 - RowsCache = null; + _rowsCache = null; return; void ProcessData() diff --git a/src/BootstrapBlazor/Components/Table/Table.razor.Toolbar.cs b/src/BootstrapBlazor/Components/Table/Table.razor.Toolbar.cs index ccd68e7bafe..4512128113e 100644 --- a/src/BootstrapBlazor/Components/Table/Table.razor.Toolbar.cs +++ b/src/BootstrapBlazor/Components/Table/Table.razor.Toolbar.cs @@ -648,7 +648,7 @@ protected async Task SaveModelAsync(EditContext context, ItemChangedType c if (DynamicContext != null) { await DynamicContext.SetValue(context.Model); - RowsCache = null; + _rowsCache = null; valid = true; } else @@ -1095,7 +1095,7 @@ private void ResetDynamicContext() private void QueryDynamicItems(QueryPageOptions queryOption, IDynamicObjectContext? context) { - RowsCache = null; + _rowsCache = null; if (context != null) { var items = context.GetItems(); diff --git a/src/BootstrapBlazor/Components/Table/Table.razor.TreeNode.cs b/src/BootstrapBlazor/Components/Table/Table.razor.TreeNode.cs index 86b54b8e97c..a6b88532b68 100644 --- a/src/BootstrapBlazor/Components/Table/Table.razor.TreeNode.cs +++ b/src/BootstrapBlazor/Components/Table/Table.razor.TreeNode.cs @@ -107,7 +107,7 @@ protected Func ToggleTreeRow(TItem item) => async () => IsLoadChildren = false; // 清除缓存 - RowsCache = null; + _rowsCache = null; // 更新 UI StateHasChanged(); diff --git a/src/BootstrapBlazor/Components/Table/Table.razor.cs b/src/BootstrapBlazor/Components/Table/Table.razor.cs index 1f308c337c8..28898dc7f48 100644 --- a/src/BootstrapBlazor/Components/Table/Table.razor.cs +++ b/src/BootstrapBlazor/Components/Table/Table.razor.cs @@ -928,7 +928,7 @@ protected override void OnParametersSet() IsPagination = false; } - RowsCache = null; + _rowsCache = null; if (IsExcel) { @@ -1266,21 +1266,17 @@ protected async Task LoopQueryAsync() /// private IEnumerable QueryItems { get; set; } = []; - [NotNull] - private List? RowsCache { get; set; } + private List? _rowsCache; /// /// 获得 当前表格所有 Rows 集合 /// - public List Rows + private List Rows { get { - // https://gitee.com/LongbowEnterprise/BootstrapBlazor/issues/I5JG5D - // 如果 QueryItems 无默认值 - // 页面 OnInitializedAsync 二刷再 OnAfterRender 过程中导致 QueryItems 变量为空 ToList 报错 - RowsCache ??= IsTree ? TreeRows.GetAllItems() : [.. (Items ?? QueryItems)]; - return RowsCache; + _rowsCache ??= IsTree ? TreeRows.GetAllItems() : [.. (Items ?? QueryItems)]; + return _rowsCache; } } From dd15c59fecda18ec2bbff08a4b8978728c190ddc Mon Sep 17 00:00:00 2001 From: Argo Zhang Date: Thu, 27 Mar 2025 12:08:01 +0800 Subject: [PATCH 03/13] =?UTF-8?q?feat:=20=E5=A2=9E=E5=8A=A0=20OverscanCoun?= =?UTF-8?q?t=20=E5=8F=82=E6=95=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/BootstrapBlazor/Components/Table/Table.razor | 4 ++-- src/BootstrapBlazor/Components/Table/Table.razor.cs | 7 +++++++ 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/src/BootstrapBlazor/Components/Table/Table.razor b/src/BootstrapBlazor/Components/Table/Table.razor index e083fb21aac..fa641db7af3 100644 --- a/src/BootstrapBlazor/Components/Table/Table.razor +++ b/src/BootstrapBlazor/Components/Table/Table.razor @@ -369,13 +369,13 @@ { @if (Items != null) { - + } else { } diff --git a/src/BootstrapBlazor/Components/Table/Table.razor.cs b/src/BootstrapBlazor/Components/Table/Table.razor.cs index 28898dc7f48..a528296c2c0 100644 --- a/src/BootstrapBlazor/Components/Table/Table.razor.cs +++ b/src/BootstrapBlazor/Components/Table/Table.razor.cs @@ -370,6 +370,13 @@ private string GetSortTooltip(ITableColumn col) => SortName != col.GetFieldName( [Parameter] public float RowHeight { get; set; } = 38f; + /// + /// Gets or sets the overscan count for virtual scrolling. Default is 10. + /// + /// Effective when is set to . + [Parameter] + public int OverscanCount { get; set; } = 10; + [Inject] [NotNull] private IOptionsMonitor? Options { get; set; } From 22d153fd49eb13176ee8ee3380f9a279e63a3830 Mon Sep 17 00:00:00 2001 From: Argo Zhang Date: Thu, 27 Mar 2025 12:08:44 +0800 Subject: [PATCH 04/13] =?UTF-8?q?test:=20=E6=9B=B4=E6=96=B0=E5=8D=95?= =?UTF-8?q?=E5=85=83=E6=B5=8B=E8=AF=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- test/UnitTest/Components/TableTest.cs | 1 + 1 file changed, 1 insertion(+) diff --git a/test/UnitTest/Components/TableTest.cs b/test/UnitTest/Components/TableTest.cs index 1efe834925f..3062ed46c8f 100644 --- a/test/UnitTest/Components/TableTest.cs +++ b/test/UnitTest/Components/TableTest.cs @@ -2104,6 +2104,7 @@ public void IsFixedFooter_Ok() pb.Add(a => a.RenderMode, TableRenderMode.Table); pb.Add(a => a.ScrollMode, ScrollMode.Virtual); pb.Add(a => a.RowHeight, 39.5f); + pb.Add(a => a.OverscanCount, 10); pb.Add(a => a.ShowFooter, true); pb.Add(a => a.IsFixedFooter, true); pb.Add(a => a.Items, Foo.GenerateFoo(localizer)); From f574004b7dc87154b597a09467fe366732be6adb Mon Sep 17 00:00:00 2001 From: Argo Zhang Date: Thu, 27 Mar 2025 12:12:37 +0800 Subject: [PATCH 05/13] =?UTF-8?q?test:=20=E6=9B=B4=E6=96=B0=E5=8D=95?= =?UTF-8?q?=E5=85=83=E6=B5=8B=E8=AF=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- test/UnitTest/Components/TableTest.cs | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/test/UnitTest/Components/TableTest.cs b/test/UnitTest/Components/TableTest.cs index 3062ed46c8f..e01da5b4630 100644 --- a/test/UnitTest/Components/TableTest.cs +++ b/test/UnitTest/Components/TableTest.cs @@ -210,7 +210,9 @@ public async Task Items_EditForm_Add(InsertRowMode insertMode) var table = cut.FindComponent>(); await cut.InvokeAsync(table.Instance.AddAsync); Assert.True(updated); - Assert.Equal(2, table.Instance.Rows.Count); + + var rows = table.FindAll("tbody tr"); + Assert.Equal(2, rows.Count); } [Fact] @@ -8929,8 +8931,11 @@ public async Task TestLoopQueryAsync() public async Task TestDeleteAsync() { - SelectedRows.Add(Rows[0]); - await DeleteAsync(); + if (Items != null) + { + SelectedRows.Add(Items.First()); + await DeleteAsync(); + } } public string? TestGetCellClassString(ITableColumn col) => base.GetCellClassString(col, false, false); From 35b74d6cd0895469bbedb8428b421c4f429c1602 Mon Sep 17 00:00:00 2001 From: Argo Zhang Date: Thu, 27 Mar 2025 12:27:26 +0800 Subject: [PATCH 06/13] =?UTF-8?q?refactor:=20=E4=BB=A3=E7=A0=81=E6=A0=BC?= =?UTF-8?q?=E5=BC=8F=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Components/Table/Table.razor.TreeNode.cs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/BootstrapBlazor/Components/Table/Table.razor.TreeNode.cs b/src/BootstrapBlazor/Components/Table/Table.razor.TreeNode.cs index a6b88532b68..bf315e55ae2 100644 --- a/src/BootstrapBlazor/Components/Table/Table.razor.TreeNode.cs +++ b/src/BootstrapBlazor/Components/Table/Table.razor.TreeNode.cs @@ -28,7 +28,6 @@ public partial class Table /// /// 获得/设置 树形数据集合 /// - [NotNull] private List> TreeRows { get; } = new(100); /// @@ -36,7 +35,7 @@ public partial class Table /// private bool IsLoadChildren { get; set; } - [NotNull] + [NotNull] private string? NotSetOnTreeExpandErrorMessage { get; set; } /// @@ -121,6 +120,7 @@ private async Task>> GetChildrenRowAsync(Tabl { throw new InvalidOperationException(NotSetOnTreeExpandErrorMessage); } + return await OnTreeExpand(node.Value); } -} +} \ No newline at end of file From 0a81340e8d115012fac1ddd2dfc8ce03672286a8 Mon Sep 17 00:00:00 2001 From: Argo Zhang Date: Thu, 27 Mar 2025 17:18:24 +0800 Subject: [PATCH 07/13] =?UTF-8?q?Revert=20"refactor:=20=E4=BB=A3=E7=A0=81?= =?UTF-8?q?=E6=A0=BC=E5=BC=8F=E5=8C=96"?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This reverts commit 35b74d6cd0895469bbedb8428b421c4f429c1602. --- .../Components/Table/Table.razor.TreeNode.cs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/BootstrapBlazor/Components/Table/Table.razor.TreeNode.cs b/src/BootstrapBlazor/Components/Table/Table.razor.TreeNode.cs index bf315e55ae2..a6b88532b68 100644 --- a/src/BootstrapBlazor/Components/Table/Table.razor.TreeNode.cs +++ b/src/BootstrapBlazor/Components/Table/Table.razor.TreeNode.cs @@ -28,6 +28,7 @@ public partial class Table /// /// 获得/设置 树形数据集合 /// + [NotNull] private List> TreeRows { get; } = new(100); /// @@ -35,7 +36,7 @@ public partial class Table /// private bool IsLoadChildren { get; set; } - [NotNull] + [NotNull] private string? NotSetOnTreeExpandErrorMessage { get; set; } /// @@ -120,7 +121,6 @@ private async Task>> GetChildrenRowAsync(Tabl { throw new InvalidOperationException(NotSetOnTreeExpandErrorMessage); } - return await OnTreeExpand(node.Value); } -} \ No newline at end of file +} From be490657e5038f02a2209e0efb5faa8d9d215e2f Mon Sep 17 00:00:00 2001 From: Argo Zhang Date: Thu, 27 Mar 2025 17:18:31 +0800 Subject: [PATCH 08/13] =?UTF-8?q?Revert=20"test:=20=E6=9B=B4=E6=96=B0?= =?UTF-8?q?=E5=8D=95=E5=85=83=E6=B5=8B=E8=AF=95"?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This reverts commit f574004b7dc87154b597a09467fe366732be6adb. --- test/UnitTest/Components/TableTest.cs | 11 +++-------- 1 file changed, 3 insertions(+), 8 deletions(-) diff --git a/test/UnitTest/Components/TableTest.cs b/test/UnitTest/Components/TableTest.cs index e01da5b4630..3062ed46c8f 100644 --- a/test/UnitTest/Components/TableTest.cs +++ b/test/UnitTest/Components/TableTest.cs @@ -210,9 +210,7 @@ public async Task Items_EditForm_Add(InsertRowMode insertMode) var table = cut.FindComponent>(); await cut.InvokeAsync(table.Instance.AddAsync); Assert.True(updated); - - var rows = table.FindAll("tbody tr"); - Assert.Equal(2, rows.Count); + Assert.Equal(2, table.Instance.Rows.Count); } [Fact] @@ -8931,11 +8929,8 @@ public async Task TestLoopQueryAsync() public async Task TestDeleteAsync() { - if (Items != null) - { - SelectedRows.Add(Items.First()); - await DeleteAsync(); - } + SelectedRows.Add(Rows[0]); + await DeleteAsync(); } public string? TestGetCellClassString(ITableColumn col) => base.GetCellClassString(col, false, false); From 716b5d1814e4be88c16c1468e0f01d02707b490c Mon Sep 17 00:00:00 2001 From: Argo Zhang Date: Thu, 27 Mar 2025 17:19:23 +0800 Subject: [PATCH 09/13] =?UTF-8?q?refactor:=20=E4=BB=A3=E7=A0=81=E6=A0=BC?= =?UTF-8?q?=E5=BC=8F=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/BootstrapBlazor/Components/Table/Table.razor.TreeNode.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/BootstrapBlazor/Components/Table/Table.razor.TreeNode.cs b/src/BootstrapBlazor/Components/Table/Table.razor.TreeNode.cs index a6b88532b68..73f0ebd5b63 100644 --- a/src/BootstrapBlazor/Components/Table/Table.razor.TreeNode.cs +++ b/src/BootstrapBlazor/Components/Table/Table.razor.TreeNode.cs @@ -28,7 +28,6 @@ public partial class Table /// /// 获得/设置 树形数据集合 /// - [NotNull] private List> TreeRows { get; } = new(100); /// @@ -121,6 +120,7 @@ private async Task>> GetChildrenRowAsync(Tabl { throw new InvalidOperationException(NotSetOnTreeExpandErrorMessage); } + return await OnTreeExpand(node.Value); } } From 370c624fd3009c7d353eb2a9fb31abd945fd067a Mon Sep 17 00:00:00 2001 From: Argo Zhang Date: Thu, 27 Mar 2025 17:23:56 +0800 Subject: [PATCH 10/13] =?UTF-8?q?Revert=20"test:=20=E6=9B=B4=E6=96=B0?= =?UTF-8?q?=E5=8D=95=E5=85=83=E6=B5=8B=E8=AF=95"?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This reverts commit 22d153fd49eb13176ee8ee3380f9a279e63a3830. --- test/UnitTest/Components/TableTest.cs | 1 - 1 file changed, 1 deletion(-) diff --git a/test/UnitTest/Components/TableTest.cs b/test/UnitTest/Components/TableTest.cs index 3062ed46c8f..1efe834925f 100644 --- a/test/UnitTest/Components/TableTest.cs +++ b/test/UnitTest/Components/TableTest.cs @@ -2104,7 +2104,6 @@ public void IsFixedFooter_Ok() pb.Add(a => a.RenderMode, TableRenderMode.Table); pb.Add(a => a.ScrollMode, ScrollMode.Virtual); pb.Add(a => a.RowHeight, 39.5f); - pb.Add(a => a.OverscanCount, 10); pb.Add(a => a.ShowFooter, true); pb.Add(a => a.IsFixedFooter, true); pb.Add(a => a.Items, Foo.GenerateFoo(localizer)); From 7f36c268c7da889a7038a9ee27343b7ee94f26b7 Mon Sep 17 00:00:00 2001 From: Argo Zhang Date: Thu, 27 Mar 2025 17:26:11 +0800 Subject: [PATCH 11/13] =?UTF-8?q?Reapply=20"test:=20=E6=9B=B4=E6=96=B0?= =?UTF-8?q?=E5=8D=95=E5=85=83=E6=B5=8B=E8=AF=95"?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This reverts commit 370c624fd3009c7d353eb2a9fb31abd945fd067a. --- test/UnitTest/Components/TableTest.cs | 1 + 1 file changed, 1 insertion(+) diff --git a/test/UnitTest/Components/TableTest.cs b/test/UnitTest/Components/TableTest.cs index 1efe834925f..3062ed46c8f 100644 --- a/test/UnitTest/Components/TableTest.cs +++ b/test/UnitTest/Components/TableTest.cs @@ -2104,6 +2104,7 @@ public void IsFixedFooter_Ok() pb.Add(a => a.RenderMode, TableRenderMode.Table); pb.Add(a => a.ScrollMode, ScrollMode.Virtual); pb.Add(a => a.RowHeight, 39.5f); + pb.Add(a => a.OverscanCount, 10); pb.Add(a => a.ShowFooter, true); pb.Add(a => a.IsFixedFooter, true); pb.Add(a => a.Items, Foo.GenerateFoo(localizer)); From c814a3346fd24b452e871bd2e84b594c109e87ed Mon Sep 17 00:00:00 2001 From: Argo Zhang Date: Thu, 27 Mar 2025 17:32:27 +0800 Subject: [PATCH 12/13] =?UTF-8?q?Revert=20"refactor:=20=E6=9B=B4=E6=94=B9?= =?UTF-8?q?=E5=8F=98=E9=87=8F=E5=8F=AF=E8=A7=81=E6=80=A7"?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This reverts commit 0c234b2bf2e40b0819ea4f2f893f80ece161cc97. --- .../Components/Table/Table.razor.Edit.cs | 4 ++-- .../Components/Table/Table.razor.Toolbar.cs | 4 ++-- .../Components/Table/Table.razor.TreeNode.cs | 2 +- .../Components/Table/Table.razor.cs | 14 +++++++++----- 4 files changed, 14 insertions(+), 10 deletions(-) diff --git a/src/BootstrapBlazor/Components/Table/Table.razor.Edit.cs b/src/BootstrapBlazor/Components/Table/Table.razor.Edit.cs index 29e55f1ca13..7b60864524d 100644 --- a/src/BootstrapBlazor/Components/Table/Table.razor.Edit.cs +++ b/src/BootstrapBlazor/Components/Table/Table.razor.Edit.cs @@ -484,7 +484,7 @@ protected async Task QueryData(bool triggerByPagination = false) else { ResetSelectedRows(Items); - _rowsCache = null; + RowsCache = null; } return; @@ -513,7 +513,7 @@ async Task OnQuery(QueryPageOptions queryOption) } // 更新数据后清除缓存防止新数据不显示 - _rowsCache = null; + RowsCache = null; return; void ProcessData() diff --git a/src/BootstrapBlazor/Components/Table/Table.razor.Toolbar.cs b/src/BootstrapBlazor/Components/Table/Table.razor.Toolbar.cs index 4512128113e..ccd68e7bafe 100644 --- a/src/BootstrapBlazor/Components/Table/Table.razor.Toolbar.cs +++ b/src/BootstrapBlazor/Components/Table/Table.razor.Toolbar.cs @@ -648,7 +648,7 @@ protected async Task SaveModelAsync(EditContext context, ItemChangedType c if (DynamicContext != null) { await DynamicContext.SetValue(context.Model); - _rowsCache = null; + RowsCache = null; valid = true; } else @@ -1095,7 +1095,7 @@ private void ResetDynamicContext() private void QueryDynamicItems(QueryPageOptions queryOption, IDynamicObjectContext? context) { - _rowsCache = null; + RowsCache = null; if (context != null) { var items = context.GetItems(); diff --git a/src/BootstrapBlazor/Components/Table/Table.razor.TreeNode.cs b/src/BootstrapBlazor/Components/Table/Table.razor.TreeNode.cs index 73f0ebd5b63..72b7f191370 100644 --- a/src/BootstrapBlazor/Components/Table/Table.razor.TreeNode.cs +++ b/src/BootstrapBlazor/Components/Table/Table.razor.TreeNode.cs @@ -106,7 +106,7 @@ protected Func ToggleTreeRow(TItem item) => async () => IsLoadChildren = false; // 清除缓存 - _rowsCache = null; + RowsCache = null; // 更新 UI StateHasChanged(); diff --git a/src/BootstrapBlazor/Components/Table/Table.razor.cs b/src/BootstrapBlazor/Components/Table/Table.razor.cs index a528296c2c0..f6d539e7054 100644 --- a/src/BootstrapBlazor/Components/Table/Table.razor.cs +++ b/src/BootstrapBlazor/Components/Table/Table.razor.cs @@ -935,7 +935,7 @@ protected override void OnParametersSet() IsPagination = false; } - _rowsCache = null; + RowsCache = null; if (IsExcel) { @@ -1273,17 +1273,21 @@ protected async Task LoopQueryAsync() /// private IEnumerable QueryItems { get; set; } = []; - private List? _rowsCache; + [NotNull] + private List? RowsCache { get; set; } /// /// 获得 当前表格所有 Rows 集合 /// - private List Rows + public List Rows { get { - _rowsCache ??= IsTree ? TreeRows.GetAllItems() : [.. (Items ?? QueryItems)]; - return _rowsCache; + // https://gitee.com/LongbowEnterprise/BootstrapBlazor/issues/I5JG5D + // 如果 QueryItems 无默认值 + // 页面 OnInitializedAsync 二刷再 OnAfterRender 过程中导致 QueryItems 变量为空 ToList 报错 + RowsCache ??= IsTree ? TreeRows.GetAllItems() : [.. (Items ?? QueryItems)]; + return RowsCache; } } From 83c8808b5d1523ec9e29842b3760aa737deb7468 Mon Sep 17 00:00:00 2001 From: Argo Zhang Date: Thu, 27 Mar 2025 17:38:38 +0800 Subject: [PATCH 13/13] =?UTF-8?q?refactor:=20=E6=9B=B4=E6=96=B0=E7=A7=81?= =?UTF-8?q?=E6=9C=89=E5=B1=9E=E6=80=A7=E4=B8=BA=E7=A7=81=E6=9C=89=E5=8F=98?= =?UTF-8?q?=E9=87=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/BootstrapBlazor/Components/Table/Table.razor.Edit.cs | 4 ++-- .../Components/Table/Table.razor.Toolbar.cs | 4 ++-- .../Components/Table/Table.razor.TreeNode.cs | 2 +- src/BootstrapBlazor/Components/Table/Table.razor.cs | 8 ++++---- 4 files changed, 9 insertions(+), 9 deletions(-) diff --git a/src/BootstrapBlazor/Components/Table/Table.razor.Edit.cs b/src/BootstrapBlazor/Components/Table/Table.razor.Edit.cs index 7b60864524d..29e55f1ca13 100644 --- a/src/BootstrapBlazor/Components/Table/Table.razor.Edit.cs +++ b/src/BootstrapBlazor/Components/Table/Table.razor.Edit.cs @@ -484,7 +484,7 @@ protected async Task QueryData(bool triggerByPagination = false) else { ResetSelectedRows(Items); - RowsCache = null; + _rowsCache = null; } return; @@ -513,7 +513,7 @@ async Task OnQuery(QueryPageOptions queryOption) } // 更新数据后清除缓存防止新数据不显示 - RowsCache = null; + _rowsCache = null; return; void ProcessData() diff --git a/src/BootstrapBlazor/Components/Table/Table.razor.Toolbar.cs b/src/BootstrapBlazor/Components/Table/Table.razor.Toolbar.cs index ccd68e7bafe..4512128113e 100644 --- a/src/BootstrapBlazor/Components/Table/Table.razor.Toolbar.cs +++ b/src/BootstrapBlazor/Components/Table/Table.razor.Toolbar.cs @@ -648,7 +648,7 @@ protected async Task SaveModelAsync(EditContext context, ItemChangedType c if (DynamicContext != null) { await DynamicContext.SetValue(context.Model); - RowsCache = null; + _rowsCache = null; valid = true; } else @@ -1095,7 +1095,7 @@ private void ResetDynamicContext() private void QueryDynamicItems(QueryPageOptions queryOption, IDynamicObjectContext? context) { - RowsCache = null; + _rowsCache = null; if (context != null) { var items = context.GetItems(); diff --git a/src/BootstrapBlazor/Components/Table/Table.razor.TreeNode.cs b/src/BootstrapBlazor/Components/Table/Table.razor.TreeNode.cs index 72b7f191370..73f0ebd5b63 100644 --- a/src/BootstrapBlazor/Components/Table/Table.razor.TreeNode.cs +++ b/src/BootstrapBlazor/Components/Table/Table.razor.TreeNode.cs @@ -106,7 +106,7 @@ protected Func ToggleTreeRow(TItem item) => async () => IsLoadChildren = false; // 清除缓存 - RowsCache = null; + _rowsCache = null; // 更新 UI StateHasChanged(); diff --git a/src/BootstrapBlazor/Components/Table/Table.razor.cs b/src/BootstrapBlazor/Components/Table/Table.razor.cs index f6d539e7054..8cdc51453ff 100644 --- a/src/BootstrapBlazor/Components/Table/Table.razor.cs +++ b/src/BootstrapBlazor/Components/Table/Table.razor.cs @@ -935,7 +935,7 @@ protected override void OnParametersSet() IsPagination = false; } - RowsCache = null; + _rowsCache = null; if (IsExcel) { @@ -1274,7 +1274,7 @@ protected async Task LoopQueryAsync() private IEnumerable QueryItems { get; set; } = []; [NotNull] - private List? RowsCache { get; set; } + private List? _rowsCache = null; /// /// 获得 当前表格所有 Rows 集合 @@ -1286,8 +1286,8 @@ public List Rows // https://gitee.com/LongbowEnterprise/BootstrapBlazor/issues/I5JG5D // 如果 QueryItems 无默认值 // 页面 OnInitializedAsync 二刷再 OnAfterRender 过程中导致 QueryItems 变量为空 ToList 报错 - RowsCache ??= IsTree ? TreeRows.GetAllItems() : [.. (Items ?? QueryItems)]; - return RowsCache; + _rowsCache ??= IsTree ? TreeRows.GetAllItems() : [.. (Items ?? QueryItems)]; + return _rowsCache; } }