gpt4 book ai didi

asp.net - RadComboBox 中的重音不敏感搜索

转载 作者:行者123 更新时间:2023-12-03 17:38:16 26 4
gpt4 key购买 nike

我对使用 ASP 网络表单和 Telerik 比较陌生,但我正在寻找一种方法,可以让我在 RadComboBox 中输入特殊字符(é、ù、à、...) .

假设我的 ObjectDataSource 中有一个名字被称为“René Somebody”。我需要能够通过搜索“Rene”和“Rene”找到他,但到目前为止还没有运气。

在应用程序中,他们设法在 RadGrid 上做到了这一点。使用过滤器,但同样的解决方案不适用于 RadComboBox据我所知。

他们在 RadGrid 中使用的解决方案: http://www.telerik.com/forums/accent-insensitive-filtering-filtering-on-a-different-column#YS1QT8P1U0-cRPFNfjvDzA

最佳答案

我无法访问后端组件,但您链接的演示包含前端代码,看起来您可以在那里破解。看起来这个控件可能既是客户端服务器又是客户端。对于客户端,只有黑客看起来有点复杂,并且涉及非公共(public) API(_onInputChange),但对于客户端-服务器案例(可能是你的情况),client side of RadComboBox Object 上的文档提到 requestItems方法所以破解它可能是合理的 future 安全:

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 = 'ÀÁÂÃÄÅàáâãäåÒÓÔÕÕÖØòóôõöøÈÉÊËèéêëðÇçÐÌÍÎÏìíîïÙÚÛÜùúûüÑñŠšŸÿýŽž';
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);

或者如果您想修改页面上的所有组合框,您可以使用相同的技巧更改原型(prototype):

hackRadComboBoxFilter(Telerik.Web.UI.RadComboBox.prototype, removeAccents)

关于asp.net - RadComboBox 中的重音不敏感搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43068864/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com