Skip to content

Commit cb0f351

Browse files
committed
持久化列的显隐到bb-table-column-visiable-{ClientTableName}
1 parent b3f199e commit cb0f351

4 files changed

Lines changed: 39 additions & 10 deletions

File tree

src/BootstrapBlazor.Server/Components/Samples/Table/TablesColumnList.razor

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@
2424
IsPagination="true" PageItemsSource="@PageItemsSource"
2525
IsStriped="true" IsBordered="true" IsMultipleSelect="true"
2626
ShowToolbar="true" ShowAddButton="false" ShowEditButton="false" ShowDeleteButton="false"
27-
ShowExtendButtons="false" ShowColumnList="true"
27+
ShowExtendButtons="false" ShowColumnList="true" ClientTableName="testtable"
2828
OnQueryAsync="@OnQueryAsync">
2929
<TableColumns>
3030
<TableColumn @bind-Field="@context.DateTime" Width="180" />

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

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@
33
// See the LICENSE file in the project root for more information.
44
// Maintainer: Argo Zhang(argo@live.ca) Website: https://www.blazor.zone
55

6+
using System.Text.Json;
7+
68
namespace BootstrapBlazor.Components;
79

810
public partial class Table<TItem>
@@ -155,7 +157,10 @@ private async Task OnToggleColumnVisible(string columnName, bool visible)
155157
{
156158
_resetColumns = true;
157159
}
158-
160+
if(ClientTableName != null && ShowColumnList)
161+
{
162+
await JSRuntime.InvokeVoidAsync("localStorage.setItem", "bb-table-column-visiable-"+ClientTableName, JsonSerializer.Serialize(_visibleColumns) ?? "");
163+
}
159164
if (OnColumnVisibleChanged != null)
160165
{
161166
await OnColumnVisibleChanged(columnName, visible);

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

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -502,7 +502,7 @@ public async Task AddAsync()
502502
{
503503
// 数据源为 DataTable 新建后重建行与列
504504
await DynamicContext.AddAsync(SelectedRows.OfType<IDynamicObject>());
505-
ResetDynamicContext();
505+
await ResetDynamicContext();
506506

507507
if (!IsKeepSelectedRowAfterAdd)
508508
{
@@ -1030,7 +1030,7 @@ protected async Task DeleteAsync()
10301030
if (DynamicContext != null)
10311031
{
10321032
await DynamicContext.DeleteAsync(SelectedRows.OfType<IDynamicObject>());
1033-
ResetDynamicContext();
1033+
await ResetDynamicContext();
10341034
SelectedRows.Clear();
10351035
await OnSelectedRowsChanged();
10361036
}
@@ -1098,7 +1098,7 @@ async Task<bool> DeleteItemsAsync()
10981098
}
10991099
}
11001100

1101-
private void ResetDynamicContext()
1101+
private async Task ResetDynamicContext()
11021102
{
11031103
if (DynamicContext != null)
11041104
{
@@ -1112,7 +1112,7 @@ private void ResetDynamicContext()
11121112
FirstFixedColumnCache.Clear();
11131113
LastFixedColumnCache.Clear();
11141114

1115-
InternalResetVisibleColumns(Columns);
1115+
await InternalResetVisibleColumns(Columns);
11161116

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

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

Lines changed: 28 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1207,7 +1207,7 @@ private async Task ProcessFirstRender()
12071207
await OnColumnCreating(cols);
12081208
}
12091209

1210-
InternalResetVisibleColumns(cols);
1210+
await InternalResetVisibleColumns(cols);
12111211

12121212
Columns.Clear();
12131213
Columns.AddRange(cols.OrderFunc());
@@ -1258,9 +1258,33 @@ private void ResetColumnWidth(List<ITableColumn> columns)
12581258
}
12591259
}
12601260

1261-
private void InternalResetVisibleColumns(List<ITableColumn> columns, IEnumerable<ColumnVisibleItem>? items = null)
1261+
private async Task InternalResetVisibleColumns(List<ITableColumn> columns, IEnumerable<ColumnVisibleItem>? items = null)
12621262
{
12631263
var cols = columns.Select(i => new ColumnVisibleItem(i.GetFieldName(), i.GetVisible()) { DisplayName = i.GetDisplayName() }).ToList();
1264+
List<ColumnVisibleItem>? ret = null;
1265+
if (ClientTableName != null && ShowColumnList)
1266+
{
1267+
var jsonData = await JSRuntime.InvokeAsync<string>("localStorage.getItem", "bb-table-column-visiable-" + ClientTableName);
1268+
if (!string.IsNullOrEmpty(jsonData))
1269+
{
1270+
try
1271+
{
1272+
ret = JsonSerializer.Deserialize<List<ColumnVisibleItem>>(jsonData, _serializerOption);
1273+
}
1274+
catch { }
1275+
if(ret != null)
1276+
{
1277+
foreach (var i in ret)
1278+
{
1279+
var col = cols.FirstOrDefault(d => d.Name == i.Name && d.DisplayName == i.DisplayName);
1280+
if (col != null)
1281+
{
1282+
col.Visible = i.Visible;
1283+
}
1284+
}
1285+
}
1286+
}
1287+
}
12641288
if (items != null)
12651289
{
12661290
foreach (var column in cols)
@@ -1284,15 +1308,15 @@ private void InternalResetVisibleColumns(List<ITableColumn> columns, IEnumerable
12841308
/// 设置 列可见方法
12851309
/// </summary>
12861310
/// <param name="columns"></param>
1287-
public void ResetVisibleColumns(IEnumerable<ColumnVisibleItem> columns)
1311+
public async Task ResetVisibleColumns(IEnumerable<ColumnVisibleItem> columns)
12881312
{
12891313
// https://github.com/dotnetcore/BootstrapBlazor/issues/6823
12901314
if (AllowResizing)
12911315
{
12921316
_resetColumns = true;
12931317
}
12941318

1295-
InternalResetVisibleColumns(Columns, columns);
1319+
await InternalResetVisibleColumns(Columns, columns);
12961320
StateHasChanged();
12971321
}
12981322

0 commit comments

Comments
 (0)