diff --git a/src/BootstrapBlazor.Server/Components/Pages/Coms.razor b/src/BootstrapBlazor.Server/Components/Pages/Coms.razor
index 4ef952c87d1..84da863cd6a 100644
--- a/src/BootstrapBlazor.Server/Components/Pages/Coms.razor
+++ b/src/BootstrapBlazor.Server/Components/Pages/Coms.razor
@@ -4,7 +4,8 @@
diff --git a/src/BootstrapBlazor.Server/Components/Pages/Coms.razor.cs b/src/BootstrapBlazor.Server/Components/Pages/Coms.razor.cs
index 662ec3b8fa4..49240cb7b44 100644
--- a/src/BootstrapBlazor.Server/Components/Pages/Coms.razor.cs
+++ b/src/BootstrapBlazor.Server/Components/Pages/Coms.razor.cs
@@ -19,4 +19,11 @@ public sealed partial class Coms
SearchText = searchText;
return Task.FromResult
>(ComponentItems.Where(i => i.Contains(searchText, StringComparison.OrdinalIgnoreCase)).ToList());
}
+
+ private Task OnClear(string searchText)
+ {
+ SearchText = "";
+ StateHasChanged();
+ return Task.CompletedTask;
+ }
}
diff --git a/src/BootstrapBlazor/BootstrapBlazor.csproj b/src/BootstrapBlazor/BootstrapBlazor.csproj
index dc8572088a4..bd6dcbcea63 100644
--- a/src/BootstrapBlazor/BootstrapBlazor.csproj
+++ b/src/BootstrapBlazor/BootstrapBlazor.csproj
@@ -1,7 +1,7 @@
- 9.4.9-beta01
+ 9.4.9-beta02
diff --git a/src/BootstrapBlazor/Components/AutoComplete/AutoComplete.razor b/src/BootstrapBlazor/Components/AutoComplete/AutoComplete.razor
index 7286758dfe9..fe0b8e712da 100644
--- a/src/BootstrapBlazor/Components/AutoComplete/AutoComplete.razor
+++ b/src/BootstrapBlazor/Components/AutoComplete/AutoComplete.razor
@@ -16,7 +16,9 @@
placeholder="@PlaceHolder" disabled="@Disabled" @ref="FocusElement"/>
-
+
+ @RenderDropdown
+
@code {
diff --git a/src/BootstrapBlazor/Components/AutoComplete/AutoComplete.razor.cs b/src/BootstrapBlazor/Components/AutoComplete/AutoComplete.razor.cs
index a1e7a8b0921..e61dc7c9859 100644
--- a/src/BootstrapBlazor/Components/AutoComplete/AutoComplete.razor.cs
+++ b/src/BootstrapBlazor/Components/AutoComplete/AutoComplete.razor.cs
@@ -90,7 +90,7 @@ public partial class AutoComplete
private List
? _filterItems;
[NotNull]
- private AutoCompleteItems? _dropdown = default;
+ private RenderTemplate? _dropdown = default;
///
///
@@ -187,15 +187,7 @@ public override Task TriggerChange(string val)
StateHasChanged();
}
_render = true;
- _dropdown.RenderContent();
+ _dropdown.Render();
return Task.CompletedTask;
}
-
- private RenderFragment RenderItems => builder =>
- {
- builder.OpenComponent(0);
- builder.AddAttribute(10, "ChildContent", RenderDropdown);
- builder.AddComponentReferenceCapture(20, dropdown => _dropdown = (AutoCompleteItems)dropdown);
- builder.CloseComponent();
- };
}
diff --git a/src/BootstrapBlazor/Components/AutoComplete/AutoCompleteItems.cs b/src/BootstrapBlazor/Components/AutoComplete/AutoCompleteItems.cs
deleted file mode 100644
index d2839dc4ce4..00000000000
--- a/src/BootstrapBlazor/Components/AutoComplete/AutoCompleteItems.cs
+++ /dev/null
@@ -1,60 +0,0 @@
-// Licensed to the .NET Foundation under one or more agreements.
-// The .NET Foundation licenses this file to you under the Apache 2.0 License
-// See the LICENSE file in the project root for more information.
-// Maintainer: Argo Zhang(argo@live.ca) Website: https://www.blazor.zone
-
-using Microsoft.AspNetCore.Components.Rendering;
-
-namespace BootstrapBlazor.Components;
-
-///
-/// AutoCompleteItems component
-///
-class AutoCompleteItems : IComponent
-{
- ///
- /// Gets or sets the child content
- ///
- [Parameter, NotNull]
- public RenderFragment? ChildContent { get; set; }
-
- private RenderHandle _renderHandle;
-
- ///
- ///
- ///
- ///
- public void Attach(RenderHandle renderHandle)
- {
- _renderHandle = renderHandle;
- }
-
- ///
- ///
- ///
- ///
- ///
- public Task SetParametersAsync(ParameterView parameters)
- {
- parameters.SetParameterProperties(this);
-
- RenderContent();
- return Task.CompletedTask;
- }
- ///
- /// Render method
- ///
- public void RenderContent()
- {
- _renderHandle.Render(BuildRenderTree);
- }
-
- ///
- ///
- ///
- ///
- private void BuildRenderTree(RenderTreeBuilder builder)
- {
- builder.AddContent(0, ChildContent);
- }
-}
diff --git a/src/BootstrapBlazor/Components/BaseComponents/RenderTemplate.razor.cs b/src/BootstrapBlazor/Components/BaseComponents/RenderTemplate.razor.cs
index 5805a63f36d..0bd7342bd4f 100644
--- a/src/BootstrapBlazor/Components/BaseComponents/RenderTemplate.razor.cs
+++ b/src/BootstrapBlazor/Components/BaseComponents/RenderTemplate.razor.cs
@@ -6,18 +6,18 @@
namespace BootstrapBlazor.Components;
///
-/// RenderTemplate 组件
+/// RenderTemplate component
///
public partial class RenderTemplate
{
///
- /// 获得/设置 子组件
+ /// Gets or sets the child component
///
[Parameter]
public RenderFragment? ChildContent { get; set; }
///
- /// 获得/设置 首次加载回调委托
+ /// Gets or sets the callback delegate for the first load
///
[Parameter]
public Func? OnRenderAsync { get; set; }
@@ -36,4 +36,12 @@ protected override async Task OnAfterRenderAsync(bool firstRender)
await OnRenderAsync(firstRender);
}
}
+
+ ///
+ /// Render method
+ ///
+ public void Render()
+ {
+ StateHasChanged();
+ }
}
diff --git a/src/BootstrapBlazor/Components/Search/Search.razor b/src/BootstrapBlazor/Components/Search/Search.razor
index 5831bb583bf..086849624a2 100644
--- a/src/BootstrapBlazor/Components/Search/Search.razor
+++ b/src/BootstrapBlazor/Components/Search/Search.razor
@@ -55,7 +55,14 @@
}
- ;
+}
diff --git a/src/BootstrapBlazor/Components/Search/Search.razor.cs b/src/BootstrapBlazor/Components/Search/Search.razor.cs
index 1e466edf07e..a906766744a 100644
--- a/src/BootstrapBlazor/Components/Search/Search.razor.cs
+++ b/src/BootstrapBlazor/Components/Search/Search.razor.cs
@@ -171,6 +171,9 @@ public partial class Search
private SearchContext _context = default!;
+ [NotNull]
+ private RenderTemplate? _dropdown = default;
+
///
///
///
@@ -205,6 +208,14 @@ protected override void OnParametersSet()
}
}
+ private bool _render = true;
+
+ ///
+ ///
+ ///
+ ///
+ protected override bool ShouldRender() => _render;
+
private string _displayText = "";
///
/// 点击搜索按钮时触发此方法
@@ -218,7 +229,7 @@ private async Task OnSearchClick()
await Task.Yield();
var items = await OnSearch(_displayText);
- _filterItems = items.ToList();
+ _filterItems = [.. items];
ButtonIcon = SearchButtonIcon;
if (IsTriggerSearchByInput == false)
{
@@ -280,11 +291,13 @@ private async Task OnClickItem(TValue val)
[JSInvokable]
public override async Task TriggerChange(string val)
{
+ _render = false;
_displayText = val;
-
if (IsTriggerSearchByInput)
{
await OnSearchClick();
}
+ _render = true;
+ _dropdown.Render();
}
}