asp.net – RadComboBox中的重音不敏感搜索
发布时间:2020-12-16 07:42:19 所属栏目:asp.Net 来源:网络整理
导读:我对使用ASP webforms和Telerik相对较新,但我正在寻找一种允许我在RadComboBox中输入特殊字符(é,ù,à,…)的方法. 假设我的ObjectDataSource中有一个名为“RenéTomebody”的名字.我需要通过搜索“Rene”和“René”来找到他,但到目前为止还没有运气. 在应
我对使用ASP webforms和Telerik相对较新,但我正在寻找一种允许我在RadComboBox中输入特殊字符(é,ù,à,…)的方法.
假设我的ObjectDataSource中有一个名为“RenéTomebody”的名字.我需要通过搜索“Rene”和“René”来找到他,但到目前为止还没有运气. 在应用程序中,他们设法在具有过滤器的RadGrid上执行此操作,但据我所知,同样的解决方案对RadComboBox不起作用. 他们在RadGrid中使用的解决方案:http://www.telerik.com/forums/accent-insensitive-filtering-filtering-on-a-different-column#YS1QT8P1U0-cRPFNfjvDzA 解决方法
我无法访问后端组件,但您链接的演示包含前端代码,看起来您可以在那里进行攻击.看起来这个控件可能只是客户端服务器和客户端.对于客户端,只有黑客看起来有点复杂并且需要非公共API(_onInputChange)但是对于客户端 – 服务器情况(可能是你的情况),client side of RadComboBox Object上的文档提到了requestItems方法,所以黑客攻击它可能是合理的未来安全:
var hackRadComboBoxFilter = function (combobox,filterProcessingFunction) { var oldRequestItems = combobox.requestItems; combobox.requestItems = function() { var args = Array.prototype.slice.call(arguments); // requestItems has several arguments but the text seems to be the // first one,so let's modify it and call the original method var origFilter = args[0]; args[0] = filterProcessingFunction(origFilter); oldRequestItems.apply(this,args); } }; 不幸的是,我不知道在JS中处理重音的内置方法,但你也可以在这里破解一些简单的东西: var accents = 'àá????àáa???òó?????òó????èéê?èéê?e??Dìí??ìí??ùú?üùú?ü??????y??'; var mappedAccents = "AAAAAAaaaaaaOOOOOOOooooooEEEEeeeeeCcDIIIIiiiiUUUUuuuuNnSsYyyZz"; var removeAccents = function (origStr) { var components = []; var len = origStr.length; var afterLastAccent = 0; for (var i = 0; i < len; i++) { var mapPos = accents.indexOf(origStr[i]); if (mapPos != -1) { components.push(origStr.substr(afterLastAccent,i - afterLastAccent) + mappedAccents[mapPos]); afterLastAccent = i + 1; } } if (afterLastAccent < len) components.push(origStr.substr(afterLastAccent,len - afterLastAccent)); return components.join(''); }; 所以现在你可以将它组合成这样的东西: // In real app you probably want something like this // var targetComboBox = $find("<%= RadComboBox1.ClientID %>"); // but for test let's just hack first combobox on the page var targetComboBox = Telerik.Web.UI.RadComboBox.ComboBoxes[0]; hackRadComboBoxFilter(targetComboBox,removeAccents); 或者如果要修改页面上的所有组合框,可以使用相同的技巧更改原型: hackRadComboBoxFilter(Telerik.Web.UI.RadComboBox.prototype,removeAccents) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- asp.net – 如何标签(设置标题)为IIS Express过程?
- 将ASP.NET从1.1升级到2.0 – 任何问题?
- asp.net – “填充无效,不能删除”异常WebResource.axd
- 你如何将一个asp.net验证器绑定到多个控件?
- asp.net-mvc – Application_Error已调用,但没有异常
- asp.net-mvc – 在ASP.NET MVC中执行原始SQL查询,数据库优先
- asp.net – RegularExpressionValidator VS Ajax 1.0.20229
- asp.net-4.0 – 我可以强制asp设置与id相同的名称
- 使用ASP.NET 2.0处理过期会话的最有效方法是什么
- asp.net-mvc – 如何将复杂对象传递给ASP.NET MVC中的另一个
推荐文章
站长推荐
- asp.net-mvc – 如何让HTML DropDownListFor回发
- asp-classic – 检查VBScript中是否存在Object
- ASP.NET网站项目何时重新编译?
- asp.net – 如何在没有文件扩展名的情况下制作AS
- asp.net-mvc – F#支持最新的asp.net 5和MVC6
- asp.net-web-api – 我是否使用正确的终身经理进
- ASP.NET Web应用程序的安装
- 如何从ASP .NET网站检测客户端上安装的Java运行时
- ASP.NET Core macOS 环境配置 - ASP.NET Core 基
- asp.net-mvc-3 – MVC3显示日期短时间没有格式字
热点阅读