diff --git a/src/BootstrapBlazor/BootstrapBlazor.csproj b/src/BootstrapBlazor/BootstrapBlazor.csproj index bafc8bb9971..825b196c690 100644 --- a/src/BootstrapBlazor/BootstrapBlazor.csproj +++ b/src/BootstrapBlazor/BootstrapBlazor.csproj @@ -1,7 +1,7 @@  - 9.5.5 + 9.5.6-beta01 diff --git a/src/BootstrapBlazor/Components/Select/Select.razor.cs b/src/BootstrapBlazor/Components/Select/Select.razor.cs index 07b418f8785..faeca2acc00 100644 --- a/src/BootstrapBlazor/Components/Select/Select.razor.cs +++ b/src/BootstrapBlazor/Components/Select/Select.razor.cs @@ -156,6 +156,8 @@ public partial class Select : ISelect, ILookup private ItemsProviderResult _result; + private string _defaultVirtualizedItemText = ""; + private SelectedItem? SelectedItem { get; set; } private SelectedItem? SelectedRow @@ -175,7 +177,7 @@ private SelectedItem? SelectedRow return null; } - var item = IsVirtualize ? GetItemByVirtulized() : GetItemByRows(); + var item = IsVirtualize ? GetItemByVirtualized() : GetItemByRows(); if (item != null) { if (_init && DisableItemChangedWhenFirstRender) @@ -193,7 +195,7 @@ private SelectedItem? SelectedRow private SelectedItem? GetItemWithEnumValue() => ValueType.IsEnum ? Rows.Find(i => i.Value == Convert.ToInt32(Value).ToString()) : null; - private SelectedItem GetItemByVirtulized() => new(CurrentValueAsString, DefaultVirtualizeItemText ?? CurrentValueAsString); + private SelectedItem GetItemByVirtualized() => new(CurrentValueAsString, _defaultVirtualizedItemText); private SelectedItem? GetItemByRows() { @@ -204,6 +206,16 @@ private SelectedItem? SelectedRow return item; } + /// + /// + /// + protected override void OnInitialized() + { + base.OnInitialized(); + + _defaultVirtualizedItemText = DefaultVirtualizeItemText ?? CurrentValueAsString; + } + /// /// /// @@ -363,6 +375,7 @@ private async Task OnClickItem(SelectedItem item) } if (ret) { + _defaultVirtualizedItemText = item.Text; await SelectedItemChanged(item); } } diff --git a/test/UnitTest/Components/SelectTest.cs b/test/UnitTest/Components/SelectTest.cs index 7f4faa7d893..180d5f63dd7 100644 --- a/test/UnitTest/Components/SelectTest.cs +++ b/test/UnitTest/Components/SelectTest.cs @@ -761,7 +761,7 @@ public void ItemClick_Ok() } [Fact] - public void DefaultVirtualizeItemText_Ok() + public void DefaultVirtualizeItemText_Null() { var cut = Context.RenderComponent>(pb => { @@ -776,12 +776,33 @@ public void DefaultVirtualizeItemText_Ok() var input = cut.Find(".form-select"); Assert.Contains("value=\"3\"", input.OuterHtml); + } - cut.SetParametersAndRender(pb => + [Fact] + public async Task DefaultVirtualizeItemText_Ok() + { + var cut = Context.RenderComponent>(pb => { + pb.Add(a => a.Items, new SelectedItem[] + { + new("1", "Test1"), + new("2", "Test2") + }); + pb.Add(a => a.Value, "3"); + pb.Add(a => a.IsVirtualize, true); pb.Add(a => a.DefaultVirtualizeItemText, "Test3"); }); + + var input = cut.Find(".form-select"); Assert.Contains("value=\"Test3\"", input.OuterHtml); + + var items = cut.FindAll(".dropdown-item"); + Assert.Equal(2, items.Count); + + var item = items[1]; + await cut.InvokeAsync(() => item.Click()); + input = cut.Find(".form-select"); + Assert.Contains("value=\"Test2\"", input.OuterHtml); } [Fact]