Skip to content

Commit d88b5a2

Browse files
authored
fix(Select): make sure show the right display text (#5806)
* refactor: 重构 DefaultVirtualizeItemText 逻辑 * test: 更新单元测试 * chore: bump version 9.5.6-beta01
1 parent 9f4c21d commit d88b5a2

File tree

3 files changed

+39
-5
lines changed

3 files changed

+39
-5
lines changed

src/BootstrapBlazor/BootstrapBlazor.csproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
<Project Sdk="Microsoft.NET.Sdk.Razor">
22

33
<PropertyGroup>
4-
<Version>9.5.5</Version>
4+
<Version>9.5.6-beta01</Version>
55
</PropertyGroup>
66

77
<ItemGroup>

src/BootstrapBlazor/Components/Select/Select.razor.cs

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -156,6 +156,8 @@ public partial class Select<TValue> : ISelect, ILookup
156156

157157
private ItemsProviderResult<SelectedItem> _result;
158158

159+
private string _defaultVirtualizedItemText = "";
160+
159161
private SelectedItem? SelectedItem { get; set; }
160162

161163
private SelectedItem? SelectedRow
@@ -175,7 +177,7 @@ private SelectedItem? SelectedRow
175177
return null;
176178
}
177179

178-
var item = IsVirtualize ? GetItemByVirtulized() : GetItemByRows();
180+
var item = IsVirtualize ? GetItemByVirtualized() : GetItemByRows();
179181
if (item != null)
180182
{
181183
if (_init && DisableItemChangedWhenFirstRender)
@@ -193,7 +195,7 @@ private SelectedItem? SelectedRow
193195

194196
private SelectedItem? GetItemWithEnumValue() => ValueType.IsEnum ? Rows.Find(i => i.Value == Convert.ToInt32(Value).ToString()) : null;
195197

196-
private SelectedItem GetItemByVirtulized() => new(CurrentValueAsString, DefaultVirtualizeItemText ?? CurrentValueAsString);
198+
private SelectedItem GetItemByVirtualized() => new(CurrentValueAsString, _defaultVirtualizedItemText);
197199

198200
private SelectedItem? GetItemByRows()
199201
{
@@ -204,6 +206,16 @@ private SelectedItem? SelectedRow
204206
return item;
205207
}
206208

209+
/// <summary>
210+
/// <inheritdoc/>
211+
/// </summary>
212+
protected override void OnInitialized()
213+
{
214+
base.OnInitialized();
215+
216+
_defaultVirtualizedItemText = DefaultVirtualizeItemText ?? CurrentValueAsString;
217+
}
218+
207219
/// <summary>
208220
/// <inheritdoc/>
209221
/// </summary>
@@ -363,6 +375,7 @@ private async Task OnClickItem(SelectedItem item)
363375
}
364376
if (ret)
365377
{
378+
_defaultVirtualizedItemText = item.Text;
366379
await SelectedItemChanged(item);
367380
}
368381
}

test/UnitTest/Components/SelectTest.cs

Lines changed: 23 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -761,7 +761,7 @@ public void ItemClick_Ok()
761761
}
762762

763763
[Fact]
764-
public void DefaultVirtualizeItemText_Ok()
764+
public void DefaultVirtualizeItemText_Null()
765765
{
766766
var cut = Context.RenderComponent<Select<string>>(pb =>
767767
{
@@ -776,12 +776,33 @@ public void DefaultVirtualizeItemText_Ok()
776776

777777
var input = cut.Find(".form-select");
778778
Assert.Contains("value=\"3\"", input.OuterHtml);
779+
}
779780

780-
cut.SetParametersAndRender(pb =>
781+
[Fact]
782+
public async Task DefaultVirtualizeItemText_Ok()
783+
{
784+
var cut = Context.RenderComponent<Select<string>>(pb =>
781785
{
786+
pb.Add(a => a.Items, new SelectedItem[]
787+
{
788+
new("1", "Test1"),
789+
new("2", "Test2")
790+
});
791+
pb.Add(a => a.Value, "3");
792+
pb.Add(a => a.IsVirtualize, true);
782793
pb.Add(a => a.DefaultVirtualizeItemText, "Test3");
783794
});
795+
796+
var input = cut.Find(".form-select");
784797
Assert.Contains("value=\"Test3\"", input.OuterHtml);
798+
799+
var items = cut.FindAll(".dropdown-item");
800+
Assert.Equal(2, items.Count);
801+
802+
var item = items[1];
803+
await cut.InvokeAsync(() => item.Click());
804+
input = cut.Find(".form-select");
805+
Assert.Contains("value=\"Test2\"", input.OuterHtml);
785806
}
786807

787808
[Fact]

0 commit comments

Comments
 (0)