Skip to content
2 changes: 1 addition & 1 deletion src/BootstrapBlazor/BootstrapBlazor.csproj
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
<Project Sdk="Microsoft.NET.Sdk.Razor">

<PropertyGroup>
<Version>9.7.4-beta06</Version>
<Version>9.7.4-beta07</Version>
</PropertyGroup>

<ItemGroup>
Expand Down
2 changes: 1 addition & 1 deletion src/BootstrapBlazor/Components/Table/ColumnWidth.cs
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ namespace BootstrapBlazor.Components;
/// <summary>
/// 列宽设置类
/// </summary>
class ColumnWidth
struct ColumnWidth
{
/// <summary>
/// 获得/设置 列名称
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -1102,7 +1102,7 @@ private void ResetDynamicContext()
FirstFixedColumnCache.Clear();
LastFixedColumnCache.Clear();

InternalResetVisibleColumns();
InternalResetVisibleColumns(Columns);

var queryOption = BuildQueryPageOptions();
// 设置是否为首次查询
Expand Down
32 changes: 17 additions & 15 deletions src/BootstrapBlazor/Components/Table/Table.razor.cs
Original file line number Diff line number Diff line change
Expand Up @@ -963,7 +963,7 @@ protected override void OnParametersSet()
ResetDynamicContext();

// resize column width;
ResetColumnWidth();
ResetColumnWidth(Columns);
}
}

Expand Down Expand Up @@ -1022,7 +1022,7 @@ protected override async Task OnAfterRenderAsync(bool firstRender)
await InvokeVoidAsync("scrollTo", Id);
}

if(_shouldScrollTop)
if (_shouldScrollTop)
{
_shouldScrollTop = false;
await InvokeVoidAsync("scrollTo", Id);
Expand Down Expand Up @@ -1101,7 +1101,7 @@ private async Task OnTableRenderAsync(bool firstRender)

private readonly JsonSerializerOptions _serializerOption = new(JsonSerializerDefaults.Web);

private async Task<List<ColumnWidth>> ReloadColumnWidthFromBrowserAsync()
private async Task ReloadColumnWidthFromBrowserAsync(List<ITableColumn> columns)
{
List<ColumnWidth>? ret = null;
if (!string.IsNullOrEmpty(ClientTableName) && AllowResizing)
Expand All @@ -1124,7 +1124,9 @@ private async Task<List<ColumnWidth>> ReloadColumnWidthFromBrowserAsync()
catch { }
}
}
return ret ?? [];
_clientColumnWidths = ret ?? [];

ResetColumnWidth(columns);
}

private async Task ReloadColumnOrdersFromBrowserAsync(List<ITableColumn> columns)
Expand Down Expand Up @@ -1174,19 +1176,19 @@ private async Task ProcessFirstRender()
}

await ReloadColumnOrdersFromBrowserAsync(cols);
Comment on lines 1177 to 1178
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

suggestion: Columns is cleared and repopulated after InternalResetVisibleColumns, which now takes cols instead of Columns.

If InternalResetVisibleColumns should use the updated columns, move Columns.Clear/AddRange before calling it.

Columns.Clear();
Columns.AddRange(cols.OrderFunc());

// 查看是否开启列宽序列化
_clientColumnWidths = await ReloadColumnWidthFromBrowserAsync();
ResetColumnWidth();
await ReloadColumnWidthFromBrowserAsync(cols);

if (OnColumnCreating != null)
{
await OnColumnCreating(Columns);
await OnColumnCreating(cols);
}

InternalResetVisibleColumns();
InternalResetVisibleColumns(cols);

Columns.Clear();
Columns.AddRange(cols.OrderFunc());

// set default sortName
var col = Columns.Find(i => i is { Sortable: true, DefaultSort: true });
Expand Down Expand Up @@ -1222,21 +1224,21 @@ protected override async Task InvokeInitAsync()
}
}

private void ResetColumnWidth()
private void ResetColumnWidth(List<ITableColumn> columns)
{
foreach (var cw in _clientColumnWidths.Where(c => c.Width > 0))
{
var c = Columns.Find(c => c.GetFieldName() == cw.Name);
var c = columns.Find(c => c.GetFieldName() == cw.Name);
if (c != null)
{
c.Width = cw.Width;
}
}
}

private void InternalResetVisibleColumns(IEnumerable<ColumnVisibleItem>? items = null)
private void InternalResetVisibleColumns(List<ITableColumn> columns, IEnumerable<ColumnVisibleItem>? items = null)
{
var cols = Columns.Select(i => new ColumnVisibleItem(i.GetFieldName(), i.GetVisible()) { DisplayName = i.GetDisplayName() }).ToList();
var cols = columns.Select(i => new ColumnVisibleItem(i.GetFieldName(), i.GetVisible()) { DisplayName = i.GetDisplayName() }).ToList();
if (items != null)
{
foreach (var column in cols)
Expand All @@ -1262,7 +1264,7 @@ private void InternalResetVisibleColumns(IEnumerable<ColumnVisibleItem>? items =
/// <param name="columns"></param>
public void ResetVisibleColumns(IEnumerable<ColumnVisibleItem> columns)
{
InternalResetVisibleColumns(columns);
InternalResetVisibleColumns(Columns, columns);
StateHasChanged();
}

Expand Down