Skip to content

Commit e0124b2

Browse files
committed
refactor: 使用 TableContentCell 组件渲染
1 parent 8349f14 commit e0124b2

File tree

5 files changed

+53
-26
lines changed

5 files changed

+53
-26
lines changed

src/BootstrapBlazor/Components/Table/Table.razor

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -736,15 +736,15 @@
736736
}
737737
else
738738
{
739-
@RenderContentColumn(item);
739+
@RenderContentRow(item);
740740
}
741741
@if (ShowExtendButtons && !IsExtendButtonsInRowHeader)
742742
{
743743
@RenderRowExtendButtons(item)
744744
}
745745
</DynamicElement>;
746746

747-
RenderFragment<TableContentColumnContext<TItem>> RenderContentCell => context =>
747+
RenderFragment<TableContentCellContext<TItem>> RenderContentCell => context =>
748748
@<td colspan="@GetColSpan(context.ColSpan)" class="@GetFixedCellClassString(context.Col, context.CellClass)" style="@GetFixedCellStyleString(context.Col)">
749749
<DynamicElement TagName="div" TriggerClick="@context.HesTreeChildren"
750750
OnClick="@ToggleTreeRow(context.Item)" StopPropagation="context.HesTreeChildren"

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

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1367,7 +1367,7 @@ protected RenderFragment GetValue(ITableColumn col, TItem item) => builder =>
13671367
};
13681368
#endregion
13691369

1370-
private RenderFragment RenderContentColumn(TItem item) => builder =>
1370+
private RenderFragment RenderContentRow(TItem item) => builder =>
13711371
{
13721372
var index = 0;
13731373
var colIndex = 0;
@@ -1409,8 +1409,7 @@ private RenderFragment RenderContentColumn(TItem item) => builder =>
14091409
}
14101410
}
14111411
var hesTreeChildren = isFirstColOfTree && hasChildren;
1412-
1413-
var context = new TableContentColumnContext<TItem>()
1412+
var context = new TableContentCellContext<TItem>()
14141413
{
14151414
Item = item,
14161415
ColSpan = colSpan,
@@ -1423,7 +1422,11 @@ private RenderFragment RenderContentColumn(TItem item) => builder =>
14231422
ValueTemplate = valueTemplate,
14241423
Value = value
14251424
};
1426-
builder.AddContent(0, RenderContentCell(context));
1425+
1426+
builder.OpenComponent<TableContentCell>(0);
1427+
builder.SetKey(context);
1428+
builder.AddAttribute(0, nameof(TableContentCell.ChildContent), RenderContentCell(context));
1429+
builder.CloseComponent();
14271430
}
14281431
};
14291432

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
// Licensed to the .NET Foundation under one or more agreements.
2+
// The .NET Foundation licenses this file to you under the Apache 2.0 License
3+
// See the LICENSE file in the project root for more information.
4+
// Maintainer: Argo Zhang([email protected]) Website: https://www.blazor.zone
5+
6+
using Microsoft.AspNetCore.Components.Rendering;
7+
8+
namespace BootstrapBlazor.Components;
9+
10+
class TableContentCell : IComponent
11+
{
12+
private RenderHandle _renderHandle;
13+
14+
[Parameter]
15+
public RenderFragment? ChildContent { get; set; }
16+
17+
void IComponent.Attach(RenderHandle renderHandle)
18+
{
19+
_renderHandle = renderHandle;
20+
}
21+
22+
/// <summary>
23+
/// <inheritdoc/>
24+
/// </summary>
25+
/// <param name="parameters"></param>
26+
/// <returns></returns>
27+
Task IComponent.SetParametersAsync(ParameterView parameters)
28+
{
29+
parameters.SetParameterProperties(this);
30+
31+
_renderHandle.Render(BuildRenderTree);
32+
return Task.CompletedTask;
33+
}
34+
35+
/// <summary>
36+
/// <inheritdoc/>
37+
/// </summary>
38+
/// <param name="builder"></param>
39+
private void BuildRenderTree(RenderTreeBuilder builder)
40+
{
41+
builder.AddContent(0, ChildContent);
42+
}
43+
}

src/BootstrapBlazor/Components/Table/TableContentColumnContext.cs renamed to src/BootstrapBlazor/Components/Table/TableContentCellContext.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55

66
namespace BootstrapBlazor.Components;
77

8-
readonly record struct TableContentColumnContext<TItem>
8+
readonly record struct TableContentCellContext<TItem>
99
{
1010
public TItem Item { get; init; }
1111

src/BootstrapBlazor/Components/Table/TableContentColumn.cs

Lines changed: 0 additions & 19 deletions
This file was deleted.

0 commit comments

Comments
 (0)