From 3be46a4ac590c4c063b42412e267fead30449132 Mon Sep 17 00:00:00 2001
From: Diego <2248356998@qq.com>
Date: Fri, 21 Mar 2025 14:56:37 +0800
Subject: [PATCH 1/8] =?UTF-8?q?=E4=B8=8A=E4=BC=A0=E4=BE=8B=E5=AD=90?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../Components/Samples/Selects.razor | 9 +++++++++
.../Components/Samples/Selects.razor.cs | 7 +++++++
2 files changed, 16 insertions(+)
diff --git a/src/BootstrapBlazor.Server/Components/Samples/Selects.razor b/src/BootstrapBlazor.Server/Components/Samples/Selects.razor
index b54eedfce0a..f4d1c5062f8 100644
--- a/src/BootstrapBlazor.Server/Components/Samples/Selects.razor
+++ b/src/BootstrapBlazor.Server/Components/Samples/Selects.razor
@@ -36,6 +36,15 @@
+
+
+
+
+
+
+
diff --git a/src/BootstrapBlazor.Server/Components/Samples/Selects.razor.cs b/src/BootstrapBlazor.Server/Components/Samples/Selects.razor.cs
index 4eb82111198..5dc0183754f 100644
--- a/src/BootstrapBlazor.Server/Components/Samples/Selects.razor.cs
+++ b/src/BootstrapBlazor.Server/Components/Samples/Selects.razor.cs
@@ -10,6 +10,13 @@ namespace BootstrapBlazor.Server.Components.Samples;
///
public sealed partial class Selects
{
+ private long TestId { get; set; } = 1;
+ private IEnumerable TestItems { get; set; } = new[]
+{
+ new SelectedItem ("1", "mm1"),
+ new SelectedItem ("2", "mm2")
+ };
+
[NotNull]
private ConsoleLogger? Logger { get; set; }
From fdd97e3434058281208f5488f3525baead1e5d07 Mon Sep 17 00:00:00 2001
From: Argo Zhang
Date: Fri, 21 Mar 2025 16:07:08 +0800
Subject: [PATCH 2/8] =?UTF-8?q?refactor:=20=E5=A2=9E=E5=8A=A0=20DefaultVir?=
=?UTF-8?q?tualizeItemText=20=E5=8F=82=E6=95=B0?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/BootstrapBlazor/Components/Select/Select.razor.cs | 8 +++++++-
src/BootstrapBlazor/Components/Select/SelectBase.cs | 8 --------
2 files changed, 7 insertions(+), 9 deletions(-)
diff --git a/src/BootstrapBlazor/Components/Select/Select.razor.cs b/src/BootstrapBlazor/Components/Select/Select.razor.cs
index 5786295d175..4bca9288424 100644
--- a/src/BootstrapBlazor/Components/Select/Select.razor.cs
+++ b/src/BootstrapBlazor/Components/Select/Select.razor.cs
@@ -118,6 +118,12 @@ public partial class Select : ISelect, ILookup
[Parameter]
public object? LookupServiceData { get; set; }
+ ///
+ /// Gets or sets the default text for virtualized items. Default is null.
+ ///
+ [Parameter]
+ public string? DefaultVirtualizeItemText { get; set; }
+
///
///
///
@@ -172,7 +178,7 @@ private SelectedItem? SelectedRow
if (IsVirtualize)
{
_init = false;
- return new SelectedItem(CurrentValueAsString, CurrentValueAsString);
+ return new SelectedItem(CurrentValueAsString, DefaultVirtualizeItemText ?? CurrentValueAsString);
}
var item = GetItemWithEnumValue()
diff --git a/src/BootstrapBlazor/Components/Select/SelectBase.cs b/src/BootstrapBlazor/Components/Select/SelectBase.cs
index efacfbd4cf6..8e7b0862f32 100644
--- a/src/BootstrapBlazor/Components/Select/SelectBase.cs
+++ b/src/BootstrapBlazor/Components/Select/SelectBase.cs
@@ -111,14 +111,6 @@ public abstract class SelectBase : PopoverSelectBase
[Parameter]
public int OverscanCount { get; set; } = 4;
- ///
- /// Gets or sets the default text for virtualized items. Default is null.
- ///
- [Parameter]
- [ExcludeFromCodeCoverage]
- [Obsolete("已弃用,删除即可;Deprecated, just delete")]
- public string? DefaultVirtualizeItemText { get; set; }
-
///
/// Gets or sets the callback method when the clear button is clicked. Default is null.
///
From 7c1a589b134cac34de9d1f8faeb2a02aa1edcf9d Mon Sep 17 00:00:00 2001
From: Argo Zhang
Date: Fri, 21 Mar 2025 16:24:33 +0800
Subject: [PATCH 3/8] =?UTF-8?q?refactor:=20=E4=BB=A3=E7=A0=81=E9=87=8D?=
=?UTF-8?q?=E6=9E=84=E6=8F=90=E9=AB=98=E5=8F=AF=E8=AF=BB=E6=80=A7?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../Components/Select/Select.razor.cs | 27 +++++++++----------
1 file changed, 13 insertions(+), 14 deletions(-)
diff --git a/src/BootstrapBlazor/Components/Select/Select.razor.cs b/src/BootstrapBlazor/Components/Select/Select.razor.cs
index 4bca9288424..07b418f8785 100644
--- a/src/BootstrapBlazor/Components/Select/Select.razor.cs
+++ b/src/BootstrapBlazor/Components/Select/Select.razor.cs
@@ -175,17 +175,7 @@ private SelectedItem? SelectedRow
return null;
}
- if (IsVirtualize)
- {
- _init = false;
- return new SelectedItem(CurrentValueAsString, DefaultVirtualizeItemText ?? CurrentValueAsString);
- }
-
- var item = GetItemWithEnumValue()
- ?? Rows.Find(i => i.Value == CurrentValueAsString)
- ?? Rows.Find(i => i.Active)
- ?? Rows.FirstOrDefault(i => !i.IsDisabled);
-
+ var item = IsVirtualize ? GetItemByVirtulized() : GetItemByRows();
if (item != null)
{
if (_init && DisableItemChangedWhenFirstRender)
@@ -201,9 +191,18 @@ private SelectedItem? SelectedRow
return item;
}
- private SelectedItem? GetItemWithEnumValue() => ValueType.IsEnum
- ? Rows.Find(i => i.Value == Convert.ToInt32(Value).ToString())
- : null;
+ private SelectedItem? GetItemWithEnumValue() => ValueType.IsEnum ? Rows.Find(i => i.Value == Convert.ToInt32(Value).ToString()) : null;
+
+ private SelectedItem GetItemByVirtulized() => new(CurrentValueAsString, DefaultVirtualizeItemText ?? CurrentValueAsString);
+
+ private SelectedItem? GetItemByRows()
+ {
+ var item = GetItemWithEnumValue()
+ ?? Rows.Find(i => i.Value == CurrentValueAsString)
+ ?? Rows.Find(i => i.Active)
+ ?? Rows.FirstOrDefault(i => !i.IsDisabled);
+ return item;
+ }
///
///
From 58c350f8bd8015569d09aece0010950f9f7bee3f Mon Sep 17 00:00:00 2001
From: Argo Zhang
Date: Fri, 21 Mar 2025 16:24:40 +0800
Subject: [PATCH 4/8] =?UTF-8?q?test:=20=E5=A2=9E=E5=8A=A0=E5=8D=95?=
=?UTF-8?q?=E5=85=83=E6=B5=8B=E8=AF=95?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
test/UnitTest/Components/SelectTest.cs | 26 +++++++++++++++++++++++++-
1 file changed, 25 insertions(+), 1 deletion(-)
diff --git a/test/UnitTest/Components/SelectTest.cs b/test/UnitTest/Components/SelectTest.cs
index c3956644435..b4c5140ac1e 100644
--- a/test/UnitTest/Components/SelectTest.cs
+++ b/test/UnitTest/Components/SelectTest.cs
@@ -371,7 +371,7 @@ await cut.InvokeAsync(() =>
}
[Fact]
- public void DisableItemChangedWhenFirstRender_Ok()
+ public void DisableItemChangedWhenFirstRender_False()
{
var triggered = false;
@@ -394,6 +394,30 @@ public void DisableItemChangedWhenFirstRender_Ok()
Assert.False(triggered);
}
+ [Fact]
+ public void DisableItemChangedWhenFirstRender_True()
+ {
+ var triggered = false;
+
+ // 空值时,不触发 OnSelectedItemChanged 回调
+ var cut = Context.RenderComponent
public sealed partial class Selects
{
- private long TestId { get; set; } = 1;
- private IEnumerable TestItems { get; set; } = new[]
-{
- new SelectedItem ("1", "mm1"),
- new SelectedItem ("2", "mm2")
- };
-
[NotNull]
private ConsoleLogger? Logger { get; set; }