Skip to content

Commit 1469626

Browse files
yacperArgoZhang
andauthored
fix(Table): update table column order in OnColumnCreating not work (#6242)
* bugfix: Table控件中,如果OnColumnCreating回调中修改了Column项的Order,并不会起作用 * revert: 撤销更改 * refactor: 代码格式化 * refactor: 私有变量内部化提高可读性 * refactor: 更改为结构体 * refactor: 使用中间变量传递列集合 * fix: 修复排序逻辑混乱问题 * chore: bump version 9.7.4-beta07 Co-Authored-By: yacper <[email protected]> --------- Co-authored-by: Argo Zhang <[email protected]> Co-authored-by: yacper <[email protected]>
1 parent e6c8012 commit 1469626

File tree

4 files changed

+20
-18
lines changed

4 files changed

+20
-18
lines changed

src/BootstrapBlazor/BootstrapBlazor.csproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
<Project Sdk="Microsoft.NET.Sdk.Razor">
22

33
<PropertyGroup>
4-
<Version>9.7.4-beta06</Version>
4+
<Version>9.7.4-beta07</Version>
55
</PropertyGroup>
66

77
<ItemGroup>

src/BootstrapBlazor/Components/Table/ColumnWidth.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ namespace BootstrapBlazor.Components;
88
/// <summary>
99
/// 列宽设置类
1010
/// </summary>
11-
class ColumnWidth
11+
struct ColumnWidth
1212
{
1313
/// <summary>
1414
/// 获得/设置 列名称

src/BootstrapBlazor/Components/Table/Table.razor.Toolbar.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1102,7 +1102,7 @@ private void ResetDynamicContext()
11021102
FirstFixedColumnCache.Clear();
11031103
LastFixedColumnCache.Clear();
11041104

1105-
InternalResetVisibleColumns();
1105+
InternalResetVisibleColumns(Columns);
11061106

11071107
var queryOption = BuildQueryPageOptions();
11081108
// 设置是否为首次查询

src/BootstrapBlazor/Components/Table/Table.razor.cs

Lines changed: 17 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -963,7 +963,7 @@ protected override void OnParametersSet()
963963
ResetDynamicContext();
964964

965965
// resize column width;
966-
ResetColumnWidth();
966+
ResetColumnWidth(Columns);
967967
}
968968
}
969969

@@ -1022,7 +1022,7 @@ protected override async Task OnAfterRenderAsync(bool firstRender)
10221022
await InvokeVoidAsync("scrollTo", Id);
10231023
}
10241024

1025-
if(_shouldScrollTop)
1025+
if (_shouldScrollTop)
10261026
{
10271027
_shouldScrollTop = false;
10281028
await InvokeVoidAsync("scrollTo", Id);
@@ -1101,7 +1101,7 @@ private async Task OnTableRenderAsync(bool firstRender)
11011101

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

1104-
private async Task<List<ColumnWidth>> ReloadColumnWidthFromBrowserAsync()
1104+
private async Task ReloadColumnWidthFromBrowserAsync(List<ITableColumn> columns)
11051105
{
11061106
List<ColumnWidth>? ret = null;
11071107
if (!string.IsNullOrEmpty(ClientTableName) && AllowResizing)
@@ -1124,7 +1124,9 @@ private async Task<List<ColumnWidth>> ReloadColumnWidthFromBrowserAsync()
11241124
catch { }
11251125
}
11261126
}
1127-
return ret ?? [];
1127+
_clientColumnWidths = ret ?? [];
1128+
1129+
ResetColumnWidth(columns);
11281130
}
11291131

11301132
private async Task ReloadColumnOrdersFromBrowserAsync(List<ITableColumn> columns)
@@ -1174,19 +1176,19 @@ private async Task ProcessFirstRender()
11741176
}
11751177

11761178
await ReloadColumnOrdersFromBrowserAsync(cols);
1177-
Columns.Clear();
1178-
Columns.AddRange(cols.OrderFunc());
11791179

11801180
// 查看是否开启列宽序列化
1181-
_clientColumnWidths = await ReloadColumnWidthFromBrowserAsync();
1182-
ResetColumnWidth();
1181+
await ReloadColumnWidthFromBrowserAsync(cols);
11831182

11841183
if (OnColumnCreating != null)
11851184
{
1186-
await OnColumnCreating(Columns);
1185+
await OnColumnCreating(cols);
11871186
}
11881187

1189-
InternalResetVisibleColumns();
1188+
InternalResetVisibleColumns(cols);
1189+
1190+
Columns.Clear();
1191+
Columns.AddRange(cols.OrderFunc());
11901192

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

1225-
private void ResetColumnWidth()
1227+
private void ResetColumnWidth(List<ITableColumn> columns)
12261228
{
12271229
foreach (var cw in _clientColumnWidths.Where(c => c.Width > 0))
12281230
{
1229-
var c = Columns.Find(c => c.GetFieldName() == cw.Name);
1231+
var c = columns.Find(c => c.GetFieldName() == cw.Name);
12301232
if (c != null)
12311233
{
12321234
c.Width = cw.Width;
12331235
}
12341236
}
12351237
}
12361238

1237-
private void InternalResetVisibleColumns(IEnumerable<ColumnVisibleItem>? items = null)
1239+
private void InternalResetVisibleColumns(List<ITableColumn> columns, IEnumerable<ColumnVisibleItem>? items = null)
12381240
{
1239-
var cols = Columns.Select(i => new ColumnVisibleItem(i.GetFieldName(), i.GetVisible()) { DisplayName = i.GetDisplayName() }).ToList();
1241+
var cols = columns.Select(i => new ColumnVisibleItem(i.GetFieldName(), i.GetVisible()) { DisplayName = i.GetDisplayName() }).ToList();
12401242
if (items != null)
12411243
{
12421244
foreach (var column in cols)
@@ -1262,7 +1264,7 @@ private void InternalResetVisibleColumns(IEnumerable<ColumnVisibleItem>? items =
12621264
/// <param name="columns"></param>
12631265
public void ResetVisibleColumns(IEnumerable<ColumnVisibleItem> columns)
12641266
{
1265-
InternalResetVisibleColumns(columns);
1267+
InternalResetVisibleColumns(Columns, columns);
12661268
StateHasChanged();
12671269
}
12681270

0 commit comments

Comments
 (0)