diff --git a/src/BootstrapBlazor/BootstrapBlazor.csproj b/src/BootstrapBlazor/BootstrapBlazor.csproj index addd5e804002edaf4ee4135dc6a0492d2c9d4db1..05b381327f4ae371048c031ce8897dce6b1f8f1e 100644 --- a/src/BootstrapBlazor/BootstrapBlazor.csproj +++ b/src/BootstrapBlazor/BootstrapBlazor.csproj @@ -1,7 +1,7 @@ - 7.1.3 + 7.1.4-beta02 diff --git a/src/BootstrapBlazor/Components/Table/Table.razor.Sort.cs b/src/BootstrapBlazor/Components/Table/Table.razor.Sort.cs index a7f1b10a7cce6f554327353bd8b19eb3fc02c105..eabc00021e1d1cc2c521403fb5342dff9296846a 100644 --- a/src/BootstrapBlazor/Components/Table/Table.razor.Sort.cs +++ b/src/BootstrapBlazor/Components/Table/Table.razor.Sort.cs @@ -2,6 +2,8 @@ // 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/ +using System.Collections.Concurrent; + namespace BootstrapBlazor.Components; /// @@ -159,7 +161,9 @@ public partial class Table private bool IsLastMultiColumn() => FixedMultipleColumn && (!FixedExtendButtonsColumn || !IsExtendButtonsInRowHeader) && !GetColumns().Any(i => i.Fixed); - private bool IsLastColumn(ITableColumn col) + private ConcurrentDictionary LastFixedColumnCache { get; } = new(); + + private bool IsLastColumn(ITableColumn col) => LastFixedColumnCache.GetOrAdd(col, col => { var ret = false; if (col.Fixed && !IsTail(col)) @@ -168,11 +172,13 @@ public partial class Table ret = index < Columns.Count && Columns[index].Fixed == false; } return ret; - } + }); private bool IsLastExtendButtonColumn() => IsExtendButtonsInRowHeader && !GetColumns().Any(i => i.Fixed); - private bool IsFirstColumn(ITableColumn col) + private ConcurrentDictionary FirstFixedColumnCache { get; } = new(); + + private bool IsFirstColumn(ITableColumn col) => FirstFixedColumnCache.GetOrAdd(col, col => { var ret = false; if (col.Fixed && IsTail(col)) @@ -181,7 +187,7 @@ public partial class Table ret = index > 0 && Columns[index].Fixed == false; } return ret; - } + }); private bool IsFirstExtendButtonColumn() => !IsExtendButtonsInRowHeader && !GetColumns().Any(i => i.Fixed); diff --git a/src/BootstrapBlazor/Components/Table/Table.razor.Toolbar.cs b/src/BootstrapBlazor/Components/Table/Table.razor.Toolbar.cs index 3ce00e6fb9f2f0be3771bfb2babdaae950c46b8c..be1c79db112d5fa1d552072c4a89de2a46463106 100644 --- a/src/BootstrapBlazor/Components/Table/Table.razor.Toolbar.cs +++ b/src/BootstrapBlazor/Components/Table/Table.razor.Toolbar.cs @@ -773,6 +773,10 @@ public partial class Table Columns.Clear(); Columns.AddRange(cols); + // Columns 重构 清空缓存 + FirstFixedColumnCache.Clear(); + LastFixedColumnCache.Clear(); + InternalResetVisibleColumns(Columns.Select(i => new ColumnVisibleItem(i.GetFieldName(), i.Visible))); QueryDynamicItems(DynamicContext);