combobox下拉框多字段模糊过滤

 

1.easyui

/**
 * 下拉框过滤
 * @param q
 * @param row
 * @param keys Array型
 * @return
 */
function filterComboboxData(q, row, keys){
 if(keys && keys.length > 0){
  for(var i=0;i<keys.length;i++){
   var result = row[keys[i]].toLowerCase().indexOf(q) > -1;
   if(result == true){
    return true;
   }
  }
 }else{
  var opts = $(this).combobox('options');
  return row[opts.textField].toLowerCase().indexOf(q) > -1;
 }
}

 

调用:

<select class="easyui-combobox textbox" id="diagnose2" name="diagnose2" data-options="required:true,valueField:'hcdid',textField:'name',url:'app/menzhen/listAllDiagnosis.do',filter: filterCombo"></select>


function filterCombo(q, row){
 var keys = new Array();
 keys[keys.length] = 'name';
 keys[keys.length] = 'wubicode';
 keys[keys.length] = 'pinyincode';
 return filterComboboxData(q, row, keys);
}

 

 

2.ext


/**
 * ext filterCombobox输入过滤
 * @param qe
 * @param keys Array型
 * @return
 */
function filterCombobox(qe,keys){
 //combo,query,forceAll,cancel
 var combo = qe.combo;
 var q = qe.query;  
 var forceAll = qe.forceAll;
 if(forceAll === true || (q.length >= combo.minChars)){
  if(combo.lastQuery !== q){
   combo.lastQuery = q;
   if(combo.mode == 'local'){
    combo.selectedIndex = -1;
    if(forceAll){
     combo.store.clearFilter();
    }else{//写自己的模糊过滤条件
     combo.store.filterBy(function(record,id){
      var result = false;
      if(keys && keys.length > 0){
       for(var j=0; j=keys.length; j++){
        var text = record.get(keys[i]);
        var val=combo.getValue();
        //过滤掉与输入框的值相等的记录
        if(text==val){
         return false;
        }
        result = (text.indexOf(q)!= -1);
        if(result == true){
         break;
        }
       }
      }else{
       var text = record.get(combo.displayField);
       var val=combo.getValue();
       //过滤掉与输入框的值相等的记录
       if(text==val){
        return false;
       }
       result = (text.indexOf(q)!= -1);
      }
                        return result;
     });
    }
    combo.onLoad();
   }else{
    combo.store.baseParams[combo.queryParam] = q;
    combo.store.load({  
     params: combo.getParams(q)  
             });  
    combo.expand();
   }
  }else{
   combo.selectedIndex = -1;  
   combo.onLoad();  
  }
 }  
 return false;
}

调用:

new Ext.form.ComboBox({
       store: new Ext.data.SimpleStore({
        fields: [{name: 'feeId',mapping:'feeId'},{name: 'feeName',mapping:'feeName'},{name: 'spec',mapping:'spec'},
                 {name: 'unit',mapping:'unit'},{name: 'price',mapping:'price'},{name: 'yibao',mapping:'yibao'}],
        data:feeNameData
     }),displayField: 'feeName', valueField: 'feeId', mode: 'local',allowBlank: false,
    editable: true, hideTrigger:false, selectOnFocus: true,forceSelection: true,triggerAction: 'all',
    listeners:{
        beforequery: function(qe){

var keys = new Array();
 keys[keys.length] = 'name';
 keys[keys.length] = 'wubicode';
 keys[keys.length] = 'pinyincode';
         return filterCombobox(qe,keys);
        }
        
       }
      })

 

 

 

 

 

 

 

 

WPF轻量级可搜索ComboBox实现原理与实践 ComboBox是桌面应用中基础但高频的UI控件,其原生不支持输入过滤,导致大数据量下用户体验严重下降。本文围绕WPF平台,深入解析一种基于依赖属性与反射机制构建的轻量级可搜索ComboBox的技术方案:通过DependencyProperty实现响应式搜索状态管理,利用安全反射动态提取对象可搜索字段,兼顾性能、可控性与零侵入集成。该方案避免第三方库依赖,内存占用低、响应快(万级数据下过滤延迟<30ms),适用于老旧WPF系统升级、教学演示及对运行时开销敏感的工业客户端场景。 阅读详情

相关推荐

WPF ComboBox的隐藏潜力:从基础控件到高级自定义

本文深入探讨了WPF ComboBox控件的高级自定义技巧,从基础架构解析到复杂数据绑定、视觉定制与模板重写,再到性能优化与高级场景应用。通过实例代码展示了如何实现包含图片、复选框的下拉列表,以及动态过滤、分组显示等实用功能,帮助开发者充分挖掘ComboBox的隐藏潜力。

weixin_29233333的博客 324

PyQT5 (七十九)扩展QComboBox下拉列表控件,通过插件增加Items模糊搜索功能

下拉列表控件 QComboBox 1、如何将列表添加到QComboBox控件中 2、如何获取选中的列表项 3.扩展基本的ComboBox插件,增加模糊搜索功能,过滤出正确的Items ''' 下拉列表控件 QComboBox 1、如何将列表添加到QComboBox控件中 2、如何获取选中的列表项 3.扩展基本的ComboBox插件,增加模糊搜索功能,过滤出正确的Items ''' import sys from PyQt5.QtCore import QSortFilterProxyModel,..

Ggome的博客 2746

C# ComboBox智能提示补全实战:从防抖匹配到高亮绘制

ComboBox智能提示补全是桌面端WinForms中提升文本筛选效率的关键技术,其核心在于将传统下拉选择升级为实时语义引导。它基于内存内多字段模糊匹配(如Code/Name/Alias)、支持子串检索与拼音首字母识别,并通过防抖定时器(150ms)规避频繁TextChanged导致的UI卡顿。技术价值体现在零延迟响应、光标精确定位与选中状态可控,适用于设备管理、工单分类等结构化枚举数据场景。本文深入解析手动接管KeyDown/TextChanged事件、OwnerDrawFixed自定义绘制、拼音码预生成

weixin_29292431的博客 178

EasyUI combobox下拉列表实现搜索过滤(模糊匹配)

  项目中的某个下拉列表长达200多个项,这么巨大的数量一个一个找眼镜都得看花,于是就得整了个搜索功能。看网上别人帖子有只能前缀匹配的方案,但只能前缀匹配的话用起来也不是很方便。于是就记录一下模糊匹配的方案。 实现效果: 这里使用的是combobox组合框,对于combobox的创建可以使用<input>输入框,也可以使用<select>下拉选。我使用的是...

weixin_30892889的博客 2698

WPF可搜索ComboBox控件实现与优化

ComboBox搜索功能是桌面应用中高频交互需求,其本质是基于用户输入对数据源进行动态过滤的UI控件行为。核心原理涉及WPF依赖属性机制、视觉树遍历、ICollectionView过滤策略及MVVM绑定解耦。技术价值在于提升大数据量下(如300+项)的选择效率与用户体验,避免滚动查找、错别字输入等操作障碍。典型应用场景包括ERP物料选择、CRM联系人筛选、工业上位机设备定位等中大型业务系统。本文聚焦WPF平台下真正可交付的可编辑ComboBox实现,涵盖DisplayMemberPath解析、多字段模糊匹配

weixin_32183107的博客 232

C# WinForms可搜索ComboBox实战:解决工业上位机下拉框卡顿与误操作

可搜索ComboBox是工业HMI、上位机及ERP本地客户端中提升人机交互效率的关键控件,其核心在于突破原生ComboBox的前缀匹配局限,实现子串检索、键盘导航与毫秒级响应。原理上需绕过AutoCompleteMode,通过BindingSource数据绑定、OwnerDraw自绘渲染、TextBox输入防抖与多线程安全更新构建响应式过滤管道。技术价值体现在显著降低用户操作路径——从‘展开→扫视→定位→点击’压缩为‘输入即见结果’,尤其适配PLC地址、报警代码、产品型号等高频长列表场景。本文基于纯原生Wi

weixin_30402231的博客 206

QComboBox过滤下拉选项

Qt QComboBox过滤下拉选项

qq_28742901的博客 1733

WPF可搜索ComboBox控件实现与优化

ComboBox搜索功能是桌面应用中高频使用的交互模式,其本质是将文本输入与下拉列表动态过滤相结合的UI组件设计问题。核心原理在于接管编辑框事件、实时响应输入变化、安全更新绑定集合,并协调焦点与下拉状态。技术价值体现在避免原生IsTextSearchEnabled的前缀匹配局限、焦点丢失和静态列表缺陷,提升工业上位机、ERP物料检索等场景下的操作效率与用户体验。本文围绕C# WPF平台,详解EditComboBox控件的设计逻辑、VisualTree遍历获取TextBox、ObservableCollect

cqwmy840702的博客 408

ComboBox 筛选 过滤

[java] view plaincopy package skins.my   {          import mx.collections.ArrayCollection;       import mx.utils.StringUtil;              import spark.components.ComboBox;       i

happyrabbit456的专栏 2533

WinForms DataGridViewComboBox智能输入匹配实战

DataGridViewComboBox是WinForms中实现下拉选择的核心控件,其自动完成(AutoComplete)能力依赖于编辑控件接管、拼音模糊匹配与消息循环协同。原理上需绕过默认DropDownList锁定,通过EditingControlShowing事件注入自定义ComboBox,并重写OnTextChanged实现实时数据过滤、ProcessCmdKey支持方向键导航与回车提交。技术价值在于提升老旧ERP/MES系统中表格数据录入效率,避免鼠标展开+滚动+点击的低效操作;典型应用场景包括省

weixin_29299807的博客 293

combobox 下拉多选框带搜索功能

NULL 博文链接:https://dengli19881102.iteye.com/blog/965751

下拉框模糊查询实战:高性能ComboBox实时筛选方案

下拉框(ComboBox)作为人机交互中最基础的控件,其搜索能力直接影响用户体验与业务效率。当数据量增长、语义复杂或操作场景多样化时,原生select控件的线性浏览模式迅速失效。本文围绕‘模糊查询’与‘实时筛选’两大核心能力,解析从倒排索引构建、分层匹配算法(前缀/子串/Levenshtein)、N-gram中文分词到虚拟列表渲染的完整技术链路,兼顾性能优化(毫秒级响应、内存可控)与工程落地(React/Vue/原生JS通用设计)。适用于教务系统、设备管理、检验平台等含数百至数千选项的真实业务场景,解决‘搜

weixin_28025327的博客 125

多列下拉框带过滤功能

winform重写dropdown下拉框,带字符串过滤,定制显示字段

WPF ComboBox轻量级搜索增强方案

ComboBox是WPF中基础的下拉选择控件,其原生设计聚焦于小规模列表的键盘导航,而非海量数据的模糊检索。当面临300+设备型号等典型业务场景时,首字母跳转明显失效,而全量Filter过滤又引发UI卡顿。本方案基于DependencyProperty与ICollectionView机制,通过附加属性注入实时搜索能力,在不修改控件模板、不引入第三方库的前提下,实现低侵入、可预测的动态过滤。关键技术包括反射安全取值、输入法兼容处理、防抖节流优化及多数据源适配,适用于本地集合的快速模糊匹配场景。

weixin_33507732的博客 211

可模糊查询的ComboBox

可模糊查询, 根据输入项筛选ComboBox内数据源, 显示符合输入内容选项

C# ComboBox(winform) 显示多列 输入自动过滤

C# ComboBox(winform 2008) 下拉多列 支持按输入的自动过滤(比如输入A,则以A开头的项全匹配出来),当只有一条满足条件时自动选中。

PyQt QListView+ComboBox联动实现搜索过滤与导航功能

在桌面应用开发中,数据展示与交互筛选是常见的工程需求。PyQt作为Python生态中成熟的GUI框架,提供了Model/View架构来分离数据与界面,QListView配合自定义模型可以高效实现列表展示。通过ComboBox与列表联动,结合搜索过滤技术,开发者能快速构建出结构清晰、响应流畅的管理工具界面。这种模式适用于设备管理、文件检索、订单核对等需在分类内逐条浏览数据的场景。文章围绕一套基于QListView和PyQt的筛选列表实现方案,深入讲解数据流设计、模型刷新及导航定位等关键环节,帮助读者掌握桌面端

weixin_34259232的博客 153

java ComboBox

扩张了java的JComboBox, 扩展功能有 1.实现了下拉选择时有提示 2.模糊查找 用法: MyComboBox test1 = new MyComboBox(10);//无参数时,下拉最大项数默认为5 test1.init(Map);//参数为Map类型,key对应为comboBox下拉显示的内容,对应的value为提示语 PS:MyComboBox只是我根据自己需要扩展的,调用JComboBox本有的方法可能会影响控件效果,没测试过!!

上一篇: easyui datagrid editor
下一篇: easyui combobox 默认值 通用方法
chun521
博客等级 码龄20年 11粉丝 144原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值