From 77ad1554e07f1b77209615c1ec801a291efa80cb Mon Sep 17 00:00:00 2001
From: Tony <6914529@qq.com>
Date: Wed, 25 Mar 2026 08:44:20 +0800
Subject: [PATCH 1/6] =?UTF-8?q?=E8=A1=A5=E5=85=85SelectSearchMetadata?=
=?UTF-8?q?=E5=AF=B9=E8=B1=A1=E4=B8=ADOnSearchTextChanged?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
补充SelectSearchMetadata对象中新增ShowSearch属性后,漏掉与之对应的OnSearchTextChanged回调,同时增加ItemTemplate属性,以便个性化下拉显示
---
.../Components/Searches/SelectSearchMetadata.cs | 12 ++++++++++++
.../Extensions/ISearchItemExtensions.cs | 2 ++
2 files changed, 14 insertions(+)
diff --git a/src/BootstrapBlazor/Components/Searches/SelectSearchMetadata.cs b/src/BootstrapBlazor/Components/Searches/SelectSearchMetadata.cs
index 64da7221803..b4a6ea159b8 100644
--- a/src/BootstrapBlazor/Components/Searches/SelectSearchMetadata.cs
+++ b/src/BootstrapBlazor/Components/Searches/SelectSearchMetadata.cs
@@ -17,6 +17,18 @@ public class SelectSearchMetadata : StringSearchMetadata
///
public bool ShowSearch { get; set; }
+ ///
+ /// 获得/设置 搜索文本改变时的回调方法
+ /// Gets or sets the callback method when the search text changes
+ ///
+ public Func>? OnSearchTextChanged { get; set; }
+
+ ///
+ /// 获得/设置 项目模板
+ /// Gets or sets the item template
+ ///
+ public RenderFragment? ItemTemplate { get; set; }
+
///
/// 获得/设置 选择项集合
/// Gets or sets the collection of select items
diff --git a/src/BootstrapBlazor/Extensions/ISearchItemExtensions.cs b/src/BootstrapBlazor/Extensions/ISearchItemExtensions.cs
index 2ef88ee7d0f..244c1c7bbff 100644
--- a/src/BootstrapBlazor/Extensions/ISearchItemExtensions.cs
+++ b/src/BootstrapBlazor/Extensions/ISearchItemExtensions.cs
@@ -161,6 +161,8 @@ private void AddSelectSearchComponent(ISearchItem item, SelectSearchMetadata sel
builder.AddAttribute(70, nameof(Select<>.PlaceHolder), selectSearchMetadata.PlaceHolder);
builder.AddAttribute(80, nameof(Select<>.SkipValidate), true);
builder.AddAttribute(90, nameof(Select<>.ShowSearch), selectSearchMetadata.ShowSearch);
+ builder.AddAttribute(100, nameof(Select<>.OnSearchTextChanged), selectSearchMetadata.OnSearchTextChanged);
+ builder.AddAttribute(110, nameof(Select<>.ItemTemplate), selectSearchMetadata.ItemTemplate);
builder.CloseComponent();
}
From 37fccece5086f7005999e9a9d8de90feab074d8b Mon Sep 17 00:00:00 2001
From: Argo Zhang
Date: Thu, 26 Mar 2026 10:09:32 +0800
Subject: [PATCH 2/6] =?UTF-8?q?feat:=20=E5=A2=9E=E5=8A=A0=20IsPopover=20?=
=?UTF-8?q?=E9=BB=98=E8=AE=A4=E8=AE=BE=E7=BD=AE?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
# Conflicts:
# src/BootstrapBlazor/Extensions/ISearchItemExtensions.cs
---
src/BootstrapBlazor/Extensions/ISearchItemExtensions.cs | 1 +
1 file changed, 1 insertion(+)
diff --git a/src/BootstrapBlazor/Extensions/ISearchItemExtensions.cs b/src/BootstrapBlazor/Extensions/ISearchItemExtensions.cs
index 244c1c7bbff..e9c3282d7d4 100644
--- a/src/BootstrapBlazor/Extensions/ISearchItemExtensions.cs
+++ b/src/BootstrapBlazor/Extensions/ISearchItemExtensions.cs
@@ -163,6 +163,7 @@ private void AddSelectSearchComponent(ISearchItem item, SelectSearchMetadata sel
builder.AddAttribute(90, nameof(Select<>.ShowSearch), selectSearchMetadata.ShowSearch);
builder.AddAttribute(100, nameof(Select<>.OnSearchTextChanged), selectSearchMetadata.OnSearchTextChanged);
builder.AddAttribute(110, nameof(Select<>.ItemTemplate), selectSearchMetadata.ItemTemplate);
+ builder.AddAttribute(120, nameof(Select<>.IsPopover), true);
builder.CloseComponent();
}
From da429f5eb5580ff4a5bd050f2ca7936b69e91723 Mon Sep 17 00:00:00 2001
From: Argo Zhang
Date: Thu, 26 Mar 2026 10:19:28 +0800
Subject: [PATCH 3/6] =?UTF-8?q?feat:=20=E5=A2=9E=E5=8A=A0=20IsPopover=20?=
=?UTF-8?q?=E5=8F=82=E6=95=B0?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../Components/Searches/SelectSearchMetadata.cs | 6 ++++++
src/BootstrapBlazor/Extensions/ISearchItemExtensions.cs | 2 +-
2 files changed, 7 insertions(+), 1 deletion(-)
diff --git a/src/BootstrapBlazor/Components/Searches/SelectSearchMetadata.cs b/src/BootstrapBlazor/Components/Searches/SelectSearchMetadata.cs
index b4a6ea159b8..21a1fd893d9 100644
--- a/src/BootstrapBlazor/Components/Searches/SelectSearchMetadata.cs
+++ b/src/BootstrapBlazor/Components/Searches/SelectSearchMetadata.cs
@@ -35,4 +35,10 @@ public class SelectSearchMetadata : StringSearchMetadata
///
///
public IEnumerable? Items { get; set; }
+
+ ///
+ /// 获得/设置 是否使用 Popover 渲染下拉框 默认 false
+ /// Gets or sets Whether to use Popover to render dropdown. Default false
+ ///
+ public bool IsPopover { get; set; }
}
diff --git a/src/BootstrapBlazor/Extensions/ISearchItemExtensions.cs b/src/BootstrapBlazor/Extensions/ISearchItemExtensions.cs
index e9c3282d7d4..caf3a266a39 100644
--- a/src/BootstrapBlazor/Extensions/ISearchItemExtensions.cs
+++ b/src/BootstrapBlazor/Extensions/ISearchItemExtensions.cs
@@ -163,7 +163,7 @@ private void AddSelectSearchComponent(ISearchItem item, SelectSearchMetadata sel
builder.AddAttribute(90, nameof(Select<>.ShowSearch), selectSearchMetadata.ShowSearch);
builder.AddAttribute(100, nameof(Select<>.OnSearchTextChanged), selectSearchMetadata.OnSearchTextChanged);
builder.AddAttribute(110, nameof(Select<>.ItemTemplate), selectSearchMetadata.ItemTemplate);
- builder.AddAttribute(120, nameof(Select<>.IsPopover), true);
+ builder.AddAttribute(120, nameof(Select<>.IsPopover), selectSearchMetadata.IsPopover);
builder.CloseComponent();
}
From 64059166fecdff7fdd7c99467e7e41ec5f7274ee Mon Sep 17 00:00:00 2001
From: Argo Zhang
Date: Thu, 26 Mar 2026 10:20:36 +0800
Subject: [PATCH 4/6] =?UTF-8?q?test:=20=E6=9B=B4=E6=96=B0=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/SearchFormItemMetadataTest.cs | 2 ++
1 file changed, 2 insertions(+)
diff --git a/test/UnitTest/Components/SearchFormItemMetadataTest.cs b/test/UnitTest/Components/SearchFormItemMetadataTest.cs
index 912028cd023..906b6071430 100644
--- a/test/UnitTest/Components/SearchFormItemMetadataTest.cs
+++ b/test/UnitTest/Components/SearchFormItemMetadataTest.cs
@@ -108,6 +108,8 @@ public void SelectSearchFormItemMetadata_Ok()
var meta = new SelectSearchMetadata()
{
ShowSearch = true,
+ IsPopover = true,
+ OnSearchTextChanged = key => [],
Items = new List()
{
new SelectedItem("v1", "v1"),
From 7af6456ed845edbc6dd4f025b0e2af3424b87871 Mon Sep 17 00:00:00 2001
From: Argo Zhang
Date: Thu, 26 Mar 2026 10:23:55 +0800
Subject: [PATCH 5/6] =?UTF-8?q?doc:=20=E8=B5=84=E6=BA=90=E6=96=87=E4=BB=B6?=
=?UTF-8?q?=E6=8E=92=E5=BA=8F?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/BootstrapBlazor.Server/Locales/en-US.json | 10 ++++++++++
src/BootstrapBlazor.Server/Locales/zh-CN.json | 10 ++++++++++
2 files changed, 20 insertions(+)
diff --git a/src/BootstrapBlazor.Server/Locales/en-US.json b/src/BootstrapBlazor.Server/Locales/en-US.json
index d38ad564a4a..3a06764977a 100644
--- a/src/BootstrapBlazor.Server/Locales/en-US.json
+++ b/src/BootstrapBlazor.Server/Locales/en-US.json
@@ -5068,6 +5068,16 @@
"SearchFormDescItem1": "Customize metadata using the SearchFormItemMetadata property in TableColumn.",
"SearchFormDescItem2": "Customize the search item UI using the RenderContent method in the SearchFormItemMetadata parameter.",
"SearchFormIntro": "Enable the search form feature by setting UseSearchForm=\"true\", and configure the search items within the form using SearchItems, suitable for scenarios with custom complex search conditions",
+ "SearchFormItemMetadataCustom": "When the default search metadata above cannot meet your business requirements, for example when a dropdown needs to use the SelectTable component for display, you can inherit from a suitable search metadata base class to implement your own custom search metadata",
+ "SearchFormItemMetadataListDesc": "The current version includes the following built-in ISearchFormItemMetadata implementations",
+ "SearchFormItemMetadataListP1": "StringSearchMetadata String search metadata, defaults to a contains relationship",
+ "SearchFormItemMetadataListP2": "MultipleStringSearchMetadata Multiple string search metadata, uses space-separated values to form multiple OR conditions, e.g. condition1 condition2 results in contains condition1 OR contains condition2",
+ "SearchFormItemMetadataListP3": "NumberSearchMetadata Number search metadata",
+ "SearchFormItemMetadataListP4": "SelectSearchMetadata Dropdown select search metadata",
+ "SearchFormItemMetadataListP5": "MultipleSelectSearchMetadata Multiple select dropdown search metadata",
+ "SearchFormItemMetadataListP6": "DateTimeSearchMetadata DateTime search metadata",
+ "SearchFormItemMetadataListP7": "DateTimeRangeSearchMetadata DateTime range search metadata",
+ "SearchFormItemMetadataListP8": "CheckboxListSearchMetadata Checkbox list search metadata",
"SearchFormTips": "Enabling UseSearchForm will prevent SearchModel SearchTemplate, CustomerSearchModel, and CustomerSearchTemplate from taking effect.",
"SearchFormTitle": "Search Form",
"SearchFormWarningTips": "BootstrapBlazor v10.4.2 introduced the UseSearchForm parameter, making the following examples obsolete. It is strongly recommended to use UseSearchForm.",
diff --git a/src/BootstrapBlazor.Server/Locales/zh-CN.json b/src/BootstrapBlazor.Server/Locales/zh-CN.json
index 6c64be92c48..64cc58c830f 100644
--- a/src/BootstrapBlazor.Server/Locales/zh-CN.json
+++ b/src/BootstrapBlazor.Server/Locales/zh-CN.json
@@ -5068,6 +5068,16 @@
"SearchFormDescItem1": "通过 TableColumn 中的 SearchFormItemMetadata 属性定制化元数据",
"SearchFormDescItem2": "通过 SearchFormItemMetadata 参数中 RenderContent 方法自定义搜索项 UI",
"SearchFormIntro": "通过设置 UseSearchForm=\"true\" 开启搜索表单功能,通过 SearchItems 配置搜索表单内搜索项,适用于自定义复杂搜索条件的场景",
+ "SearchFormItemMetadataCustom": "例如以上默认搜索元模型无法满足业务需求时,比如下拉框需要使用 SelectTable 组件进行展示,可以通过继承合适的搜索元模型基类自行实现一个自定义搜索元模型",
+ "SearchFormItemMetadataListDesc": "当前版本内置 ISearchFormItemMetadata 实现类如下",
+ "SearchFormItemMetadataListP1": "StringSearchMetadata 字符串搜索元模型 默认是包含关系",
+ "SearchFormItemMetadataListP2": "MultipleStringSearchMetadata 多字符串搜索元模型默认使用空格分隔组成多个或者条件如 条件1 条件2 最终形成 包含条件1 或者 包含条件2 的判定",
+ "SearchFormItemMetadataListP3": "NumberSearchMetadata 数字搜索元模型",
+ "SearchFormItemMetadataListP4": "SelectSearchMetadata 下拉选择搜索元模型",
+ "SearchFormItemMetadataListP5": "MultipleSelectSearchMetadata 多选下拉搜索元模型",
+ "SearchFormItemMetadataListP6": "DateTimeSearchMetadata 日期时间搜索元模型",
+ "SearchFormItemMetadataListP7": "DateTimeRangeSearchMetadata 日期时间范围搜索元模型",
+ "SearchFormItemMetadataListP8": "CheckboxListSearchMetadata 复选框列表搜索元模型",
"SearchFormTips": "开启 UseSearchForm 后 SearchModel SearchTemplate CustomerSearchModel CustomerSearchTemplate 均不生效",
"SearchFormTitle": "搜索表单",
"SearchFormWarningTips": "BootstrapBlazor v10.4.2 版本后增加 UseSearchForm 参数后以下示例均可以不学习了,强烈推荐使用 UseSearchForm",
From 27680273167735f1e80d1a6361654a6305918d25 Mon Sep 17 00:00:00 2001
From: Argo Zhang
Date: Thu, 26 Mar 2026 10:24:04 +0800
Subject: [PATCH 6/6] =?UTF-8?q?test:=20=E6=9B=B4=E6=96=B0=E5=8D=95?=
=?UTF-8?q?=E5=85=83=E6=B5=8B=E8=AF=95=E6=8F=90=E9=AB=98=E8=A6=86=E7=9B=96?=
=?UTF-8?q?=E7=8E=87?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
test/UnitTest/Components/SearchFormItemMetadataTest.cs | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/test/UnitTest/Components/SearchFormItemMetadataTest.cs b/test/UnitTest/Components/SearchFormItemMetadataTest.cs
index 906b6071430..8eaf3aed2f3 100644
--- a/test/UnitTest/Components/SearchFormItemMetadataTest.cs
+++ b/test/UnitTest/Components/SearchFormItemMetadataTest.cs
@@ -110,6 +110,10 @@ public void SelectSearchFormItemMetadata_Ok()
ShowSearch = true,
IsPopover = true,
OnSearchTextChanged = key => [],
+ ItemTemplate = item => builder =>
+ {
+ builder.AddContent(0, item.Text);
+ },
Items = new List()
{
new SelectedItem("v1", "v1"),