Skip to content

Commit 11149cf

Browse files
committed
refactor: 重构 IsHeaderRow 逻辑
1 parent 62f9733 commit 11149cf

File tree

5 files changed

+65
-53
lines changed

5 files changed

+65
-53
lines changed

src/BootstrapBlazor/Components/Filters/TableColumnFilter.razor

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
@inherits ComponentBase
33
@typeparam TFilter
44

5-
@if (IsHeaderRow)
5+
@if (_isHeaderRow)
66
{
77
@RenderFilter()
88
}

src/BootstrapBlazor/Components/Filters/TableColumnFilter.razor.cs

Lines changed: 5 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ public partial class TableColumnFilter<TFilter> where TFilter : IComponent
1616
/// 获得/设置 过滤器组件参数集合 Default is null
1717
/// </summary>
1818
[Parameter]
19-
public IDictionary<string, object>? FilterParameters { get; set;}
19+
public IDictionary<string, object>? FilterParameters { get; set; }
2020

2121
/// <summary>
2222
/// 获得/设置 重置按钮文本
@@ -39,26 +39,6 @@ public partial class TableColumnFilter<TFilter> where TFilter : IComponent
3939
[NotNull]
4040
public string? Title { get; set; }
4141

42-
/// <summary>
43-
/// 获得/设置 是否为 HeaderRow 模式 默认 false
44-
/// </summary>
45-
[Parameter]
46-
public bool IsHeaderRow { get; set; }
47-
48-
/// <summary>
49-
/// 获得/设置 <see cref="ITable"/> 实例
50-
/// </summary>
51-
[Parameter]
52-
[NotNull]
53-
public ITable? Table { get; set; }
54-
55-
/// <summary>
56-
/// 获得/设置 <see cref="ITableColumn"/> 实例
57-
/// </summary>
58-
[Parameter]
59-
[NotNull]
60-
public ITableColumn? Column { get; set; }
61-
6242
/// <summary>
6343
/// 获得/设置 增加过滤条件图标
6444
/// </summary>
@@ -90,6 +70,7 @@ public partial class TableColumnFilter<TFilter> where TFilter : IComponent
9070

9171
private int _count;
9272
private string? _fieldKey;
73+
private bool _isHeaderRow = false;
9374

9475
/// <summary>
9576
/// <inheritdoc/>
@@ -104,10 +85,8 @@ protected override void OnParametersSet()
10485
FilterButtonText ??= Localizer[nameof(FilterButtonText)];
10586
ClearButtonText ??= Localizer[nameof(ClearButtonText)];
10687

107-
Table ??= TableFilter?.Table;
108-
Column ??= TableFilter?.Column;
109-
Title = Column?.GetDisplayName();
110-
_fieldKey = Column?.GetFieldName();
88+
_isHeaderRow = TableFilter.IsHeaderRow();
89+
_fieldKey = TableFilter.GetFieldKey();
11190
}
11291

11392
/// <summary>
@@ -166,7 +145,7 @@ protected virtual RenderFragment RenderFilter() => builder =>
166145
if (filterType.IsSubclassOf(typeof(FilterBase)))
167146
{
168147
builder.AddAttribute(1, nameof(FilterBase.FieldKey), _fieldKey);
169-
builder.AddAttribute(2, nameof(FilterBase.IsHeaderRow), IsHeaderRow);
148+
builder.AddAttribute(2, nameof(FilterBase.IsHeaderRow), _isHeaderRow);
170149
}
171150
if (filterType.IsSubclassOf(typeof(MultipleFilterBase)))
172151
{

src/BootstrapBlazor/Components/Filters/TableFilter.razor

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -27,43 +27,43 @@ else
2727
{
2828
@if (Column.PropertyType.IsEnum())
2929
{
30-
<TableColumnFilter TFilter="EnumFilter" IsHeaderRow="IsHeaderRow" ShowMoreButton="true"></TableColumnFilter>
30+
<TableColumnFilter TFilter="EnumFilter" ShowMoreButton="true"></TableColumnFilter>
3131
}
3232
else if (Column.IsLookup())
3333
{
34-
<TableColumnFilter TFilter="LookupFilter" IsHeaderRow="IsHeaderRow"></TableColumnFilter>
34+
<TableColumnFilter TFilter="LookupFilter"></TableColumnFilter>
3535
}
3636
else
3737
{
3838
var fieldType = Nullable.GetUnderlyingType(Column.PropertyType) ?? Column.PropertyType;
3939
switch (fieldType.Name)
4040
{
4141
case nameof(String):
42-
<TableColumnFilter TFilter="StringFilter" IsHeaderRow="IsHeaderRow" ShowMoreButton="true"></TableColumnFilter>
42+
<TableColumnFilter TFilter="StringFilter" ShowMoreButton="true"></TableColumnFilter>
4343
break;
4444
case nameof(Boolean):
45-
<TableColumnFilter TFilter="BoolFilter" IsHeaderRow="IsHeaderRow"></TableColumnFilter>
45+
<TableColumnFilter TFilter="BoolFilter"></TableColumnFilter>
4646
break;
4747
case nameof(DateTime):
48-
<TableColumnFilter TFilter="DateTimeFilter" IsHeaderRow="IsHeaderRow" ShowMoreButton="true"></TableColumnFilter>
48+
<TableColumnFilter TFilter="DateTimeFilter" ShowMoreButton="true"></TableColumnFilter>
4949
break;
5050
case nameof(Int16):
51-
<TableColumnFilter TFilter="NumberFilter<Int16?>" IsHeaderRow="IsHeaderRow" ShowMoreButton="true"></TableColumnFilter>
51+
<TableColumnFilter TFilter="NumberFilter<Int16?>" ShowMoreButton="true"></TableColumnFilter>
5252
break;
5353
case nameof(Int32):
54-
<TableColumnFilter TFilter="NumberFilter<Int32?>" IsHeaderRow="IsHeaderRow" ShowMoreButton="true"></TableColumnFilter>
54+
<TableColumnFilter TFilter="NumberFilter<Int32?>" ShowMoreButton="true"></TableColumnFilter>
5555
break;
5656
case nameof(Int64):
57-
<TableColumnFilter TFilter="NumberFilter<Int64?>" IsHeaderRow="IsHeaderRow" ShowMoreButton="true"></TableColumnFilter>
57+
<TableColumnFilter TFilter="NumberFilter<Int64?>" ShowMoreButton="true"></TableColumnFilter>
5858
break;
5959
case nameof(Single):
60-
<TableColumnFilter TFilter="NumberFilter<Single?>" IsHeaderRow="IsHeaderRow" ShowMoreButton="true"></TableColumnFilter>
60+
<TableColumnFilter TFilter="NumberFilter<Single?>" ShowMoreButton="true"></TableColumnFilter>
6161
break;
6262
case nameof(Double):
63-
<TableColumnFilter TFilter="NumberFilter<Double?>" IsHeaderRow="IsHeaderRow" ShowMoreButton="true"></TableColumnFilter>
63+
<TableColumnFilter TFilter="NumberFilter<Double?>" ShowMoreButton="true"></TableColumnFilter>
6464
break;
6565
case nameof(Decimal):
66-
<TableColumnFilter TFilter="NumberFilter<Decimal?>" IsHeaderRow="IsHeaderRow" ShowMoreButton="true"></TableColumnFilter>
66+
<TableColumnFilter TFilter="NumberFilter<Decimal?>" ShowMoreButton="true"></TableColumnFilter>
6767
break;
6868
default:
6969
<div>@NotSupportedMessage</div>

src/BootstrapBlazor/Components/Filters/TableFilter.razor.cs

Lines changed: 19 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -109,6 +109,9 @@ protected override async Task InvokeInitAsync()
109109
}
110110
}
111111

112+
/// <summary>
113+
/// Reset filter method
114+
/// </summary>
112115
public void Reset()
113116
{
114117

@@ -120,21 +123,23 @@ public void Reset()
120123
/// <returns></returns>
121124
public async Task OnFilterAsync()
122125
{
123-
if (Table != null)
126+
if (string.IsNullOrEmpty(_fieldKey))
127+
{
128+
return;
129+
}
130+
131+
var f = FilterAction.GetFilterConditions();
132+
if (f.Filters != null && f.Filters.Count > 0)
133+
{
134+
Table.Filters[_fieldKey] = FilterAction;
135+
}
136+
else
137+
{
138+
Table.Filters.Remove(_fieldKey);
139+
}
140+
if (Table.OnFilterAsync != null)
124141
{
125-
var f = FilterAction.GetFilterConditions();
126-
if (f.Filters != null && f.Filters.Count > 0)
127-
{
128-
Table.Filters[_fieldKey] = FilterAction;
129-
}
130-
else
131-
{
132-
Table.Filters.Remove(_fieldKey);
133-
}
134-
if (Table.OnFilterAsync != null)
135-
{
136-
await Table.OnFilterAsync();
137-
}
142+
await Table.OnFilterAsync();
138143
}
139144
}
140145
}

src/BootstrapBlazor/Extensions/TableFilterExtensions.cs

Lines changed: 29 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ namespace BootstrapBlazor.Components;
1111
public static class TableFilterExtensions
1212
{
1313
/// <summary>
14-
/// <see cref="TableFilter"/> Whether has filter
14+
/// Whether has filter
1515
/// </summary>
1616
/// <param name="filter"></param>
1717
/// <returns></returns>
@@ -23,4 +23,32 @@ public static bool HasFilter(this TableFilter? filter)
2323
}
2424
return filter.Table.Filters.ContainsKey(filter.Column.GetFieldName());
2525
}
26+
27+
/// <summary>
28+
/// Whether is header row
29+
/// </summary>
30+
/// <param name="filter"></param>
31+
/// <returns></returns>
32+
public static bool IsHeaderRow(this TableFilter? filter)
33+
{
34+
if (filter == null)
35+
{
36+
return false;
37+
}
38+
return filter.IsHeaderRow;
39+
}
40+
41+
/// <summary>
42+
/// Gets the field key for the filter.
43+
/// </summary>
44+
/// <param name="filter"></param>
45+
/// <returns></returns>
46+
public static string GetFieldKey(this TableFilter? filter)
47+
{
48+
if (filter == null)
49+
{
50+
return string.Empty;
51+
}
52+
return filter.Column.GetFieldName();
53+
}
2654
}

0 commit comments

Comments
 (0)