Skip to content

Commit 37616a4

Browse files
feat(LookupFilter): support LookupServiceKey (#2406)
* LookupService bug * feat: 增加 TableFilter Lookup 支持 * Revert "LookupService bug" This reverts commit ab9c32b. * refactor: 重构部分代码 * doc: 更新注释文档 --------- Co-authored-by: Alex chow <[email protected]>
1 parent e29e3d5 commit 37616a4

File tree

2 files changed

+44
-25
lines changed

2 files changed

+44
-25
lines changed

src/BootstrapBlazor/Components/Filters/TableFilter.razor

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ else
1212
<i class="@FilterClassString" data-bs-placement="bottom" data-bs-auto-close="outside" data-bs-toggle="bb.dropdown" data-bs-custom-class="shadow">
1313
</i>
1414
<div class="card filter-item">
15-
<div class="card-header"><span>@Title</span></div>
15+
<div class="card-header"><span>@_title</span></div>
1616
<div class="card-body">
1717
@RenderFilter(Column)
1818
</div>
@@ -21,8 +21,8 @@ else
2121
<RenderTemplate>
2222
@if (ShowMoreButton)
2323
{
24-
<Button Color="Color.None" OnClick="OnClickPlus" Icon="@PlusIcon" IsDisabled="@(Count == 1)"></Button>
25-
<Button Color="Color.None" OnClick="OnClickMinus" Icon="@MinusIcon" IsDisabled="@(Count == 0)"></Button>
24+
<Button Color="Color.None" OnClick="OnClickPlus" Icon="@PlusIcon" IsDisabled="@(_count == 1)"></Button>
25+
<Button Color="Color.None" OnClick="OnClickMinus" Icon="@MinusIcon" IsDisabled="@(_count == 0)"></Button>
2626
}
2727
</RenderTemplate>
2828
</div>
@@ -42,11 +42,11 @@ else
4242
}
4343
else if (Column.PropertyType.IsEnum())
4444
{
45-
<EnumFilter Type="Column.PropertyType" Count="Count"></EnumFilter>
45+
<EnumFilter Type="Column.PropertyType" Count="_count"></EnumFilter>
4646
}
47-
else if (Column.Lookup != null)
47+
else if (IsLookup)
4848
{
49-
<LookupFilter Lookup="Column.Lookup" LookupStringComparison="Column.LookupStringComparison" Type="Column.PropertyType"></LookupFilter>
49+
<LookupFilter Lookup="_lookup.Value" LookupStringComparison="Column.LookupStringComparison" Type="Column.PropertyType"></LookupFilter>
5050
}
5151
else
5252
{
@@ -57,28 +57,28 @@ else
5757
<BoolFilter />
5858
break;
5959
case nameof(DateTime):
60-
<DateTimeFilter Count="Count" />
60+
<DateTimeFilter Count="_count" />
6161
break;
6262
case nameof(Int16):
63-
<NumberFilter TType="Int16" Count="@Count" Step="@Step" />
63+
<NumberFilter TType="Int16" Count="@_count" Step="@_step" />
6464
break;
6565
case nameof(Int32):
66-
<NumberFilter TType="Int32" Count="@Count" Step="@Step" />
66+
<NumberFilter TType="Int32" Count="@_count" Step="@_step" />
6767
break;
6868
case nameof(Int64):
69-
<NumberFilter TType="Int64" Count="@Count" Step="@Step" />
69+
<NumberFilter TType="Int64" Count="@_count" Step="@_step" />
7070
break;
7171
case nameof(Single):
72-
<NumberFilter TType="Single" Count="@Count" Step="@Step" />
72+
<NumberFilter TType="Single" Count="@_count" Step="@_step" />
7373
break;
7474
case nameof(Double):
75-
<NumberFilter TType="Double" Count="@Count" Step="@Step" />
75+
<NumberFilter TType="Double" Count="@_count" Step="@_step" />
7676
break;
7777
case nameof(Decimal):
78-
<NumberFilter TType="Decimal" Count="@Count" Step="@Step" />
78+
<NumberFilter TType="Decimal" Count="@_count" Step="@_step" />
7979
break;
8080
case nameof(String):
81-
<StringFilter Count="Count" />
81+
<StringFilter Count="_count" />
8282
break;
8383
default:
8484
<div>@NotSupportedMessage</div>

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

Lines changed: 30 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -58,8 +58,7 @@ public partial class TableFilter : IFilter
5858
/// <summary>
5959
/// 获得/设置 Header 显示文字
6060
/// </summary>
61-
[NotNull]
62-
private string? Title { get; set; }
61+
private string? _title;
6362

6463
/// <summary>
6564
/// 获得/设置 相关 Field 字段名称
@@ -70,7 +69,7 @@ public partial class TableFilter : IFilter
7069
/// <summary>
7170
/// 获得/设置 条件数量
7271
/// </summary>
73-
private int Count { get; set; }
72+
private int _count;
7473

7574
/// <summary>
7675
/// 获得/设置 是否显示增加减少条件按钮
@@ -132,7 +131,19 @@ public partial class TableFilter : IFilter
132131
[NotNull]
133132
private IIconTheme? IconTheme { get; set; }
134133

135-
private string? Step => Column.Step?.ToString();
134+
[Inject]
135+
[NotNull]
136+
private ILookupService? LookupService { get; set; }
137+
138+
/// <summary>
139+
/// 组件步长
140+
/// </summary>
141+
private string? _step;
142+
143+
/// <summary>
144+
/// 外键数据源集合
145+
/// </summary>
146+
private Lazy<IEnumerable<SelectedItem>?> _lookup = default!;
136147

137148
/// <summary>
138149
/// <inheritdoc/>
@@ -141,9 +152,15 @@ protected override void OnInitialized()
141152
{
142153
base.OnInitialized();
143154

144-
Title = Column.GetDisplayName();
155+
_title = Column.GetDisplayName();
145156
FieldKey = Column.GetFieldName();
146157
Column.Filter = this;
158+
159+
_lookup = new(() => Column.Lookup ?? (!string.IsNullOrEmpty(Column.LookupServiceKey)
160+
? LookupService.GetItemsByKey(Column.LookupServiceKey)
161+
: null)
162+
);
163+
_step = Column.Step?.ToString();
147164
}
148165

149166
/// <summary>
@@ -165,7 +182,7 @@ protected override void OnParametersSet()
165182
var filter = action.GetFilterConditions();
166183
if (filter.Filters?.Count > 1)
167184
{
168-
Count = 1;
185+
_count = 1;
169186
}
170187
}
171188
}
@@ -188,7 +205,7 @@ protected override async Task InvokeInitAsync()
188205
/// <returns></returns>
189206
private async Task OnClickReset()
190207
{
191-
Count = 0;
208+
_count = 0;
192209

193210
if (Table != null)
194211
{
@@ -231,9 +248,9 @@ internal async Task OnFilterAsync()
231248
/// <returns></returns>
232249
private void OnClickPlus()
233250
{
234-
if (Count == 0)
251+
if (_count == 0)
235252
{
236-
Count++;
253+
_count++;
237254
}
238255
}
239256

@@ -243,9 +260,11 @@ private void OnClickPlus()
243260
/// <returns></returns>
244261
private void OnClickMinus()
245262
{
246-
if (Count == 1)
263+
if (_count == 1)
247264
{
248-
Count--;
265+
_count--;
249266
}
250267
}
268+
269+
private bool IsLookup => Column.Lookup != null || !string.IsNullOrEmpty(Column.LookupServiceKey);
251270
}

0 commit comments

Comments
 (0)