Ant Design Blazor 带搜索框的 Select:EnableSearch 与 AutoClearSearchValue 实战指南
UI组件前端【免费下载链接】ant-design-blazorA rich set of enterprise-class UI components based on Ant Design and Blazor.项目地址https://gitcode.com/gh_mirrors/an/ant-design-blazor点击查看免费下载导读本指南聚焦 ant-design-blazor 中 Select 组件的带搜索框能力展开下拉后可直接输入关键字对选项进行过滤并通过AutoClearSearchValue false保留搜索框中的输入值。读完本文你将掌握EnableSearch、AutoClearSearchValue、OnSearch、SearchDebounceMilliseconds等核心参数的完整用法理解其底层过滤与清空机制并能在本地选项过滤与远程数据搜索含防抖、Loading 与 IME 输入法场景两种典型场景下正确落地。核心参数开启搜索的入口ant-design-blazor 的 Select 组件要支持展开后搜索选项需要设置以下参数定义见 SelectBase.razor.cs 与 Select.razor.cs参数类型默认值说明EnableSearchboolfalse是否开启搜索功能当Mode SelectMode.Tags时强制为trueAutoClearSearchValuebooltrue选中某个选项后是否清空搜索框的值OnSearchActionstring无搜索框输入变化时的回调参数为当前输入的字符串SearchDebounceMillisecondsint250输入防抖毫秒数用户停止输入该时长后才触发搜索处理适用于远程数据搜索Loadingboolfalse是否显示加载指示器加载逻辑需自行实现FilterExpressionFuncSelectOptionItemTItemValue, TItem, string, bool(item, searchValue) item.Label.Contains(searchValue, StringComparison.InvariantCultureIgnoreCase)自定义本地过滤逻辑需要留意的是官方文档对AutoClearSearchValue的语义描述是选中项后清空搜索框而组件源码注释将其描述为 Whether the current search will be cleared on selecting an itemSelectBase.razor.cs两者指向同一行为默认true情况下选中一个选项后搜索框内容会被清空设置为false后搜索框的值会被保留方便连续筛选。最小示例展开即搜索官方 demoSearch.razor展示了最典型的用法基于DataSource渲染选项、通过bind-Value双向绑定选中值同时打开搜索并保留搜索词。Select DataSource_persons bind-Value_selectedValue ItemValuep p.Value ItemLabelp p.Name PlaceholderSelect a person EnableSearch AutoClearSearchValuefalse OnSearchOnSearch /Select br / br / p Selected Value: _selectedValue br / Selected Item Name: _selectedItem?.Name /p code { class Person { public string Value { get; set; } public string Name { get; set; } } ListPerson _persons; string _selectedValue; Person _selectedItem; protected override void OnInitialized() { _persons new ListPerson { new Person { Value jack, Name Jack }, new Person { Value lucy, Name Lucy }, new Person { Value tom , Name Tom } }; } private void OnSearch(string value) { Console.WriteLine($search: {value}); } }要点拆解EnableSearch开启搜索输入框下拉展开后即可输入关键字ItemValue与ItemLabel分别指定数据项取值与显示文本的投影表达式也可以使用ValueName/LabelName指定属性名AutoClearSearchValuefalse保证选中 Jack 后再选 Lucy 时之前的搜索关键字依然留在输入框内OnSearch回调接收每次输入变化后的字符串可用于日志记录或联动远程查询。AutoClearSearchValue 的底层行为AutoClearSearchValue在组件中有两处关键生效路径均位于 SelectBase.razor.cs关闭下拉时清空搜索框OnOverlayHide()L856-L892在搜索开启且AutoClearSearchValue true时调用_selectContent?.ClearInput()并把内部_searchValue、_prevSearchValue重置为空字符串若设置为false则直接return搜索词得以保留。选中项后清空搜索框多选模式下SetValueAsyncL1000-L1006在搜索开启且AutoClearSearchValue true且搜索值非空时调用ClearSearch()ClearSearch()L1045-L1075会同时复位_searchValue与输入框显示并恢复被搜索隐藏的选项。与之配套的输入框复位/恢复逻辑位于内部组件 SelectContent.razor.csClearInput()在关闭下拉时清空输入内容DiscoverySearch()在下拉重新展开时把SearchValue写回输入框。因此当AutoClearSearchValue false时关闭并再次展开下拉之前输入的搜索词依然可见。搜索过滤的源码实现本地过滤默认逻辑输入变化后Select.razor.cs的OnInputAsyncL1164-L1212会执行若搜索未开启则直接返回若下拉尚未展开自动展开下拉记录_prevSearchValue更新_searchValue调用FilterOptionItems(_searchValue)对选项做本地过滤触发OnSearch?.Invoke(_searchValue)回调。FilterOptionItemsL1268-L1322的默认过滤逻辑为matches item.Label?.Contains(searchValue, StringComparison.InvariantCultureIgnoreCase) ?? false;即对每个选项的Label做忽略大小写的包含匹配匹配的选项保留显示不匹配的选项通过IsHidden true隐藏。若设置了FilterExpression则以其自定义逻辑替代默认匹配测试用例见 Select.FilterExpression.Tests.razor其中覆盖了大小写无关、n 匹配 John/Hernán/Mariño、á 匹配 Jack/Hernán/Mariño 等边界场景。进阶场景一远程数据搜索搜索框与数据源结合官方 demo SearchBox.razor 演示了搜索与远程数据结合在OnSearch中异步请求远程接口用返回结果重建DataSource并配合防抖、Loading 与隐藏空结果提示实现输入即远程查询。Select DataSource_items bind-Value_selectedValue EnableSearch Stylewidth: 200px; ValueNamenameof(Item.Value) LabelNamenameof(Item.Label) TItemValuestring TItemItem Placeholderinput search text ShowArrowIconfalse HideNotFoundContenttrue SearchDebounceMilliseconds350 Loading_loading OnSearch(async (value) await OnSearch(value)) OnSelectedItemChangedOnSelectedItemChangedHandler /Select using System.Web; using System.Text.Json; inject HttpClient Http code { class Item { public string Value { get; set; } public string Label { get; set; } } Taskstring _oldTask; ListItem _items new ListItem(); string _selectedValue; bool _loading; private async Task OnSearch(string value) { if (!string.IsNullOrWhiteSpace(value)) { if (_oldTask null || _oldTask.IsCompleted) { _loading true; StateHasChanged(); var key HttpUtility.UrlEncode(value); var url $https://suggest.taobao.com/sug?codeutf-8q{key}; _oldTask Http.GetStringAsync(url); var content await _oldTask; var result JsonSerializer.DeserializeApiResult(content); _items.Clear(); foreach (var item in result.result) { _items.Add(new Item { Value item[0], Label item[0]}); } } } else { if (_items.Any()) _items.Clear(); } _loading false; StateHasChanged(); } private void OnSelectedItemChangedHandler(Item value) { Console.WriteLine($selected: ${value?.Label}); } public class ApiResult { public Liststring[] result { get; set; } } }远程搜索场景的工程要点SearchDebounceMilliseconds350让请求只在用户停止输入 350ms 后触发避免每次按键都发起请求。该防抖在 SelectContent.razor.cs 中通过Timer实现SearchDebounceMilliseconds的组件默认值为 250SelectBase.razor.cs用_oldTask记录上一次请求任务仅在前一次请求完成后才发起新请求防止并发响应乱序覆盖结果Loading_loading在请求期间显示组件内置的加载指示器HideNotFoundContenttrue在无匹配结果时隐藏无数据占位内容ShowArrowIconfalse可隐藏右侧箭头图标让视觉更接近纯搜索输入框。进阶场景二输入法IME组合输入针对中文等依赖输入法组合输入的搜索场景组件做了专门的 IME 处理相关测试见 Select.IME.Tests.razor输入法组合期间compositionstart到compositionend不会触发搜索过滤与OnSearch回调避免拼音中间态污染过滤结果SelectContent.razor.cs组合输入结束后组件会用当前输入值补发一次OnInputChange确保最终中文结果被正确过滤。这一点对中文业务系统尤其重要若不加处理用户在输入zhong选字过程中就会触发多次无效搜索。多选 / 标签模式下的搜索IsSearchEnabled的实现SelectBase.razor.cs为internal bool IsSearchEnabled EnableSearch || Mode SelectMode.Tags;也就是说Mode SelectMode.Tags标签模式下搜索框始终开启无需显式设置EnableSearch。多选Multiple与标签模式选中项后AutoClearSearchValue true时同样会调用ClearSearch()清空搜索词并恢复被过滤隐藏的选项见上文SetValueAsync路径。常见问题与排查建议选中项后搜索词被清空这是AutoClearSearchValue true默认的预期行为如需保留显式设置AutoClearSearchValue false。下拉未展开时无法搜索OnInputAsync中仅在IsSearchEnabled为真且输入发生时自动展开下拉请确认已设置EnableSearchTags 模式除外。远程搜索请求过于频繁调大SearchDebounceMilliseconds并在OnSearch内用任务引用防并发参考 SearchBox demo 的_oldTask模式。自定义过滤不生效确认使用FilterExpression而非修改DataSource后未调用刷新本地过滤逻辑见FilterOptionItems远程场景则需自行更新DataSource。中文输入被切词过滤检查是否在 IME 组合期间触发了搜索组件已内置compositionstart/compositionend保护无需自行处理。参考资料官方带搜索框 demoSearch.md 与 Search.razor远程搜索 demosearch-box.md 与 SearchBox.razorSelect 完整参数文档index.zh-CN.md组件核心实现SelectBase.razor.cs、Select.razor.cs、SelectContent.razor.cs相关测试Select.FilterExpression.Tests.razor、Select.IME.Tests.razor赞分享UI组件前端【免费下载链接】ant-design-blazorA rich set of enterprise-class UI components based on Ant Design and Blazor.项目地址https://gitcode.com/gh_mirrors/an/ant-design-blazor点击查看免费下载相关推荐Ant Design Blazor Select 带搜索框实战EnableSearch、AutoClearSearchValue 与自定义搜索过滤Ant Design Blazor Select 带搜索框实战EnableSearch、AutoClearSearchValue 与自定义搜索过滤 导读 在前端UI组件设计系统ant-design-blazor Transfer 组件带搜索框ShowSearch完整实战指南ant design blazor Transfer 组件带搜索框ShowSearch完整实战指南 本文以 ant design blazor 仓库中 TrUI组件前端esp-iot-solution 中的 esp_lcd_panel_io_additions用 3-Wire SPI 软件时序驱动 RGB 并行接口 LCD 初始化esp iot solution 中的 esp_lcd_panel_io_additions用 3 Wire SPI 软件时序驱动 RGB 并行接口 LCD前端UI组件设计系统上一篇解锁显卡隐藏性能NVIDIA Profile Inspector深度解析与实战应用下一篇如何用免费开源工具彻底解决Dell G15散热问题3步终极控制方案创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

GraphQL核心实战:声明式查询与文件上传全流程解析

GraphQL核心实战:声明式查询与文件上传全流程解析

GraphQL 这个技术名字,做后端的应该都听腻了,但真正把它用明白的人其实不多。我见过不少团队把 GraphQL 用成“REST 换皮”:接口照旧一个萝卜一个坑,根本没用上声明式查询的优势;一到文件上传这种偏操作的场景&#xf…

2026/10/13 6:06:43 阅读更多 →
C# WinForm酒店管理系统开发实战:从登录窗体到核心业务落地

C# WinForm酒店管理系统开发实战:从登录窗体到核心业务落地

2. 主窗体骨架:从登录到主界面的第一印象3.1 登录窗体的实现细节登录窗体的逻辑本身不难,但有几个细节值得注意。首先,窗体启动位置我习惯设置为居中屏幕,StartPosition属性选择CenterScreen。界面元素不用复杂,一个用…

2026/10/13 6:06:46 阅读更多 →
手里只有一套 K 线数据,qlib158 和 alpha101 的因子库选型到底怎么挑?

手里只有一套 K 线数据,qlib158 和 alpha101 的因子库选型到底怎么挑?

手里只有一套 K 线数据,qlib158 和 alpha101 的因子库选型到底怎么挑? 【免费下载链接】Vibe-Trading "Vibe-Trading: Your Personal Trading Agent" 项目地址: https://gitcode.com/GitHub_Trending/vi/Vibe-Trading "我只有一套…

2026/10/13 6:06:02 阅读更多 →

最新新闻

鲲鹏云ARM架构Hadoop集群部署实验全流程拆解

鲲鹏云ARM架构Hadoop集群部署实验全流程拆解

简介:《鲲鹏云大数据实验docx》是一份面向云计算与大数据初学者的实验报告,完整记录了在华为云鲲鹏环境下从零搭建Hadoop集群的全过程。报告从购买弹性云服务器与对象存储服务开始,介绍如何获取AK/SK认证密钥,并逐步完成OpenJDK安…

2026/10/13 12:40:44 阅读更多 →
大数据实验第一课:Linux与Hadoop操作避坑指南

大数据实验第一课:Linux与Hadoop操作避坑指南

简介:本资源是大数据系列实验的第一份配套材料,面向刚接触大数据技术的高校学生与自学者,帮助其搭建后续实验所需的基础环境。内容围绕Linux虚拟机安装、常用Linux命令以及Hadoop伪分布式安装三大模块展开,覆盖cd、ls、mkdir、cp、…

2026/10/13 12:40:44 阅读更多 →
STM32双机CAN通信实战:TJA1050硬件设计到软件调试全解析

STM32双机CAN通信实战:TJA1050硬件设计到软件调试全解析

1. 为什么双机通信我选了CAN而不是UART——场景选择与总体方案先说一个最常见的场景:你在做一个小项目,A板和B板之间要互通数据,距离可能有个十来米,现场还有电机、变频器这类干扰源。多数人第一反应是UART,一对TX/RX接…

2026/10/13 12:40:44 阅读更多 →
数据库技术选型决策记录(ADR)实战:关系型、文档型与事件型数据库的完整评估与决策

数据库技术选型决策记录(ADR)实战:关系型、文档型与事件型数据库的完整评估与决策

【免费下载链接】architecture-decision-record Architecture decision record (ADR) examples for software planning, IT leadership, and template documentation 项目地址: https://gitcode.com/gh_mirrors/ar/architecture-decision-record 点击查看 免费下载 …

2026/10/13 12:40:44 阅读更多 →
8款硬核MCP服务器实战:让AI告别复制粘贴

8款硬核MCP服务器实战:让AI告别复制粘贴

我先从一个特别没面子但特别真实的场景说起。 上周我要做一份跨项目的数据汇总报告,具体流程是这样的:先从A系统的后台导出两个月的订单记录,再从B系统拉出成本表,打开电子表格软件把两边的格式统一,然后把关键数字一…

2026/10/13 12:40:44 阅读更多 →
Natron 中 G‘MIC Layers to Tiles 节点完全指南:多图层图像拆分为网格瓦片

Natron 中 G‘MIC Layers to Tiles 节点完全指南:多图层图像拆分为网格瓦片

音视频视频处理图形学桌面应用 【免费下载链接】Natron Open-source video compositing software. Node-graph based. Similar in functionalities to Adobe After Effects and Nuke by The Foundry. 项目地址: https://gitcode.com/gh_mirrors/na/Natron 点击查看 …

2026/10/13 12:39:44 阅读更多 →

日新闻

物联网系统集成避坑指南:从选型到验收的关键要点

物联网系统集成避坑指南:从选型到验收的关键要点

做了这么多年物联网系统集成的项目,我最大的感受是,大部分坑不是出在技术前沿,而是出在一些看起来很平常的地方。设备选了便宜的、协议没问清楚、现场没摸透、验收标准写得含糊——这些细枝末节,最后都会变成延期、超支和扯皮的大…

2026/10/13 0:00:57 阅读更多 →
ESP32舵机控制全攻略:从PWM原理到高级玩法与常见故障排查

ESP32舵机控制全攻略:从PWM原理到高级玩法与常见故障排查

如果你玩ESP32有一阵子了,很难不碰到舵机控制这道坎。做智能小车要转方向,做机械臂要抬关节,做云台要偏航俯仰,背后都是同一个东西在干活:舵机。而我见过太多人卡在“代码能编译、舵机就是不听话”这个阶段&#xff0c…

2026/10/13 0:00:57 阅读更多 →
CAN总线原理与STM32实战:抗干扰、仲裁、错误处理全解析

CAN总线原理与STM32实战:抗干扰、仲裁、错误处理全解析

1. 为什么CAN总线至今仍是工业现场的“硬通货”?——从汽车底盘到智能温室的真实需求你有没有拆过一辆老款燃油车的中控台?或者调试过某高校实验室里那台跑着Modbus协议却频频丢帧的PLC控制柜?又或者,在某个农业物联网项目里&…

2026/10/13 0:00:57 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/13 2:54:56 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/12 0:16:38 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/13 1:58:08 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/12 21:05:09 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/12 14:48:49 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/12 18:11:17 阅读更多 →