Skip to content

Commit 698a1f7

Browse files
committed
feat(Table): add 'ShowColumnListSelectExtension' parameter
1 parent e6acb2d commit 698a1f7

3 files changed

Lines changed: 45 additions & 0 deletions

File tree

src/BootstrapBlazor/Components/Table/Table.razor

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -118,6 +118,15 @@
118118
<span class="caret"></span>
119119
</button>
120120
<div class="dropdown-menu dropdown-menu-end shadow">
121+
@if (ShowColumnListSelectExtension)
122+
{
123+
<div class="dropdown-item">
124+
<Checkbox TValue="string" State="@VisibleColumnsCurrentSelectedResult"
125+
OnStateChanged="@OnToggleAllColumnsVisibleState">
126+
</Checkbox>
127+
</div>
128+
<Divider/>
129+
}
121130
@foreach (var item in _visibleColumns)
122131
{
123132
<div class="dropdown-item">

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

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -173,4 +173,34 @@ private async Task OnToggleColumnVisible(string columnName, bool visible)
173173
await OnColumnVisibleChanged(columnName, visible);
174174
}
175175
}
176+
177+
/// <summary>
178+
/// 当前所有列的是否全都显示/全都不显示/部分显示状态计算
179+
/// </summary>
180+
private CheckboxState VisibleColumnsCurrentSelectedResult
181+
=> _visibleColumns.All(r => r.Visible)
182+
? CheckboxState.Checked
183+
: _visibleColumns.All(r => !r.Visible)
184+
? CheckboxState.UnChecked
185+
: CheckboxState.Indeterminate;
186+
187+
private async Task OnToggleAllColumnsVisibleState(CheckboxState state, string _)
188+
{
189+
if (state == CheckboxState.Checked)
190+
foreach (var column in _visibleColumns)
191+
{
192+
column.Visible = true;
193+
await OnToggleColumnVisible(column.Name, true);
194+
}
195+
else if (state == CheckboxState.UnChecked)
196+
{
197+
await ShowToastAsync("提示", "表格需要至少有一列显示,点击全不选时默认第一列维持显示状态", ToastCategory.Warning);
198+
foreach (var column in _visibleColumns.Skip(1).ToList())
199+
{
200+
column.Visible = false;
201+
await OnToggleColumnVisible(column.Name, false);
202+
}
203+
}
204+
await InvokeAsync(StateHasChanged);
205+
}
176206
}

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

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -310,6 +310,12 @@ public Func<TItem, bool>? ShowDeleteButtonCallback
310310
[Parameter]
311311
public bool ShowColumnList { get; set; }
312312

313+
/// <summary>
314+
/// 获得/设置 列选择下拉框中是否显示扩展的选择功能默认为 false 不显示
315+
/// </summary>
316+
[Parameter]
317+
public bool ShowColumnListSelectExtension { get; set; }
318+
313319
/// <summary>
314320
/// 获得/设置 列选择下拉框图标
315321
/// </summary>

0 commit comments

Comments
 (0)