Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
27 commits
Select commit Hold shift + click to select a range
d0037eb
refactor: 重命名
ArgoZhang May 6, 2026
4327521
test: 更新单元测试
ArgoZhang May 6, 2026
3611b79
doc: 更新测试用例
ArgoZhang May 6, 2026
e54025a
refactor: 移除不使用的扩展方法
ArgoZhang May 6, 2026
72d1a2b
refactor: 更新客户端持久化键值
ArgoZhang May 7, 2026
d781325
refactor: 调整执行顺序
ArgoZhang May 7, 2026
6b3083a
refactor: 完善计算表格宽度方法
ArgoZhang May 7, 2026
691aafa
test: 更新单元测试
ArgoZhang May 7, 2026
7c8eaf8
refactor: 移除不需要的单元测试
ArgoZhang May 7, 2026
5619ac5
refactor: 更新 OnResizeColumnCallback_Ok 单元测试
ArgoZhang May 7, 2026
5d2f492
Merge remote-tracking branch 'origin/main' into test-table
ArgoZhang May 7, 2026
b71c773
refactor: 更新单元测试
ArgoZhang May 7, 2026
a17c7db
refactor: 移除 key 值
ArgoZhang May 8, 2026
35809e3
refactor: 更改数据类型为 List
ArgoZhang May 8, 2026
1b7abc4
refactor: 优化代码
ArgoZhang May 9, 2026
6b604aa
test: 更新数据类型
ArgoZhang May 9, 2026
f94cd47
test: 补充单元测试
ArgoZhang May 9, 2026
2d68c6e
refactor: 增加取整
ArgoZhang May 9, 2026
649272c
fix: 修复客户端回调导致宽度计算错误问题
ArgoZhang May 9, 2026
2638129
refactor: 调整代码逻辑防止窗口宽度抖动
ArgoZhang May 9, 2026
52bea3a
refactor: 精简逻辑提高可读性
ArgoZhang May 9, 2026
2abd9e5
refactor: 精简代码逻辑
ArgoZhang May 9, 2026
c9b919b
refactor(Table): FitColumnWidthIncludeHeader 参数默认值更改为 true
ArgoZhang May 9, 2026
0d6d711
Merge branch 'main' into test-table
ArgoZhang May 9, 2026
49253b4
refactor: 撤销示例更改
ArgoZhang May 9, 2026
dd531eb
refactor: 撤销示例更改
ArgoZhang May 9, 2026
7b9dcbc
revert: 撤销变更
ArgoZhang May 9, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
@page "/table/column/resizing"
@page "/table/column/resizing"
@inject IStringLocalizer<NavMenu> NavMenuLocalizer
@inject IStringLocalizer<TablesColumnResizing> Localizer
@inject IStringLocalizer<Foo> FooLocalizer
Expand Down
2 changes: 1 addition & 1 deletion src/BootstrapBlazor/Components/Table/ITable.cs
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ public interface ITable : IColumnCollection
/// <para lang="zh">获得 ITable 实例配置的可见列集合</para>
/// <para lang="en">Gets visible columns collection configured in ITable instance</para>
/// </summary>
IEnumerable<ITableColumn> GetVisibleColumns();
List<ITableColumn> GetVisibleColumns();

/// <summary>
/// <para lang="zh">获得 过滤条件集合</para>
Expand Down
34 changes: 18 additions & 16 deletions src/BootstrapBlazor/Components/Table/Table.razor
Original file line number Diff line number Diff line change
Expand Up @@ -20,24 +20,26 @@
}
else
{
BuildTableColumns();
RebuildVisibleColumnsCache();
if (ShowSearch && SearchMode == SearchMode.Top)
{
@RenderSearch
}
<RenderTemplate OnRenderAsync="OnTableRenderAsync">
@{
RebuildTableColumns();
}

if (ShowToolbar)
{
@RenderToolbar
}
@if (ShowSearch && SearchMode == SearchMode.Top)
{
@RenderSearch
}

if (ShowTopPagination && IsPagination)
{
@RenderPagination
}
@if (ShowToolbar)
{
@RenderToolbar
}

@if (ShowTopPagination && IsPagination)
{
@RenderPagination
}

<RenderTemplate OnRenderAsync="OnTableRenderAsync">
<div class="@WrapperClassName" style="@GetScrollStyleString(!IsFixedHeader)">
@if (ActiveRenderMode == TableRenderMode.Table)
{
Expand Down Expand Up @@ -303,7 +305,7 @@
{
var fieldName = col.GetFieldName();
var displayName = col.GetDisplayName();
<DynamicElement TagName="th" @key="col" class="@GetHeaderClassString(col)"
<DynamicElement TagName="th" class="@GetHeaderClassString(col)"
style="@GetFixedCellStyleString(col, ActualScrollWidth)"
TriggerClick="col.GetSortable()" OnClick="@OnClickHeader(col)"
Comment thread
ArgoZhang marked this conversation as resolved.
draggable="@DraggableString">
Expand Down
25 changes: 15 additions & 10 deletions src/BootstrapBlazor/Components/Table/Table.razor.Checkbox.cs
Original file line number Diff line number Diff line change
Expand Up @@ -168,21 +168,26 @@ private async Task OnToggleColumnVisible(TableColumnState item, bool visible)
column.Visible = visible;
}

if (column.Visible)
if (!column.Visible)
{
// 重新计算表格宽度
if (column.Width.HasValue)
{
tableWidth += column.Visible ? column.Width.Value : 0;
}
else
{
useTableWidth = false;
}
continue;
}

// 重新计算表格宽度
if (column.Width.HasValue)
{
tableWidth += column.Width.Value;
}
else
{
// 未设置列宽表格自适应
useTableWidth = false;
}
}

_tableColumnStateCache.TableWidth = useTableWidth ? tableWidth : 0;

UpdateTableWidth();
}

// 触发 OnColumnVisibleChanged 回调
Expand Down
47 changes: 25 additions & 22 deletions src/BootstrapBlazor/Components/Table/Table.razor.Sort.cs
Original file line number Diff line number Diff line change
Expand Up @@ -194,7 +194,7 @@ private int MultipleSelectColumnLeft()
/// <param name="cellClass"></param>
protected string? GetFixedCellClassString(ITableColumn col, string? cellClass = null) => CssBuilder.Default(cellClass)
.AddClass("fixed", col.Fixed)
.AddClass("fixed-right", col.Fixed && IsTail(col))
.AddClass("fixed-right", col.Fixed && IsFixRight(col))
.AddClass("fr", IsLastColumn(col))
.AddClass("fl", IsFirstColumn(col))
.Build();
Expand Down Expand Up @@ -243,10 +243,11 @@ private int MultipleSelectColumnLeft()
private bool IsLastColumn(ITableColumn col) => LastFixedColumnCache.GetOrAdd(col, col =>
{
var ret = false;
if (col.Fixed && !IsTail(col))
if (col.Fixed && !IsFixRight(col))
{
var index = Columns.IndexOf(col) + 1;
ret = index < Columns.Count && Columns[index].Fixed == false;
var columns = GetVisibleColumns();
var index = columns.IndexOf(col) + 1;
ret = index < columns.Count && columns[index].Fixed == false;
}
return ret;
});
Expand All @@ -258,12 +259,13 @@ private bool IsLastColumn(ITableColumn col) => LastFixedColumnCache.GetOrAdd(col
private bool IsFirstColumn(ITableColumn col) => FirstFixedColumnCache.GetOrAdd(col, col =>
{
var ret = false;
if (col.Fixed && IsTail(col))
if (col.Fixed && IsFixRight(col))
{
var index = Columns.IndexOf(col) - 1;
if (index > 0)
var columns = GetVisibleColumns();
var index = columns.IndexOf(col) - 1;
if (index >= 0)
{
ret = !Columns[index].Fixed;
ret = !columns[index].Fixed;
}
}
return ret;
Expand Down Expand Up @@ -310,11 +312,15 @@ private int CalcMargin()
return margin;
}

private bool IsTail(ITableColumn col)
private bool IsFixRight(ITableColumn col)
{
var middle = Math.Floor(GetVisibleColumns().Count() * 1.0 / 2);
var index = Columns.IndexOf(col);
return middle < index;
// 获得所有可见列
var columns = GetVisibleColumns();

// 获得当前列索引
var index = columns.IndexOf(col);

return !columns.Take(index).All(i => i.Fixed);
}

/// <summary>
Expand Down Expand Up @@ -344,14 +350,14 @@ string GetFixedHeaderStyleString() => IsFixedHeader
string? ret = null;
if (col.Fixed)
{
ret = IsTail(col) ? GetRightStyle(col, margin) : GetLeftStyle(col);
ret = IsFixRight(col) ? GetRightStyle(col, margin) : GetLeftStyle(col);
}
return ret;
}

private string? GetLeftStyle(ITableColumn col)
{
var columns = GetVisibleColumns().ToList();
var columns = GetVisibleColumns();
var defaultWidth = 200;
var width = 0;
var start = 0;
Expand All @@ -378,25 +384,22 @@ string GetFixedHeaderStyleString() => IsFixedHeader

private string? GetRightStyle(ITableColumn col, int margin)
{
var columns = GetVisibleColumns().ToList();
var defaultWidth = 200;
var columns = GetVisibleColumns();
var defaultWidth = DefaultFixedColumnWidth;
var width = 0;
var index = columns.IndexOf(col);

// after
while (index + 1 < columns.Count)
for (var i = index + 1; i < columns.Count; i++)
{
var column = columns[index++];
var column = columns[i];
width += column.Width ?? defaultWidth;
}
if (ShowExtendButtons && FixedExtendButtonsColumn)
{
width += ExtendButtonColumnWidth;
}

// <para lang="zh">如果是固定表头时增加滚动条位置</para>
// <para lang="en">Add scroll bar position if it is fixed header</para>
if (IsFixedHeader && (index + 1) == columns.Count)
if (IsFixedHeader)
{
width += margin;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -552,7 +552,7 @@ public Func<TItem, bool>? ShowDeleteButtonCallback
/// <para lang="zh">获得当前可见列集合</para>
/// <para lang="en">Get Visible Columns Collection</para>
/// </summary>
public IEnumerable<ITableColumn> GetVisibleColumns() => _visibleColumnsCache;
public List<ITableColumn> GetVisibleColumns() => _visibleColumnsCache;

private void RebuildVisibleColumnsCache()
{
Expand Down
Loading
Loading