AutoComplete实现有很多种,我首先做了一个非常健壮的WPF实现,每个条目都使用关键字,因此在搜索员工时,如果输入名字或姓氏,则无关紧要结果与Google Suggest类似。
我发现JQquery自动完成和ASP.Net自动填充扩展器的限制是没有关键字搜索或包含功能,它只是使用“Startswith”类型搜索。
例如,要搜索“Mark Adams”作为职员名称,您必须输入M,a,r等。如果您输入A,d等,则不会返回任何结果。
有谁知道这方面的计划?现在有什么东西吗?
答案 0 :(得分:1)
您必须错过jquery自动填充选项,例如
matchContains:true
它完全符合您的要求。当你输入A,d等时,它会匹配Mark Adams。
修改强>
对于ajaxtoolkit AutoCompleteExtender,我担心你在jquery中没有得到任何与matchContains相当的选项。但是你可以在服务方法中轻松完成。将其设为......
ServiceMethod="GetNameList"
其中GetNameList包含如何匹配数据的完整逻辑。 E.g。
public partial class _Default : System.Web.UI.Page {
[WebMethod]
public static string[] GetNameList(string prefixText, int count) {
string sql = String.Format("select name from customers where name like @given_name");
List<string> nameList = new List<string>();
using (SqlConnection connection = new SqlConnection("Integrated Security=SSPI;Initial Catalog=Northwind;Data Source=."))
using (SqlCommand command = new SqlCommand(sql, connection)) {
connection.Open();
command.Parameters.AddWithValue("@given_name", "%"+prefixText"%");
using (SqlDataReader reader = command.ExecuteReader()) {
while (reader.Read()) {
nameList.Add(reader.GetString(0));
}
}
}
return nameList.ToArray();
}
}
以下是代码行,它进行匹配。
command.Parameters.AddWithValue("@given_name", "%"+prefixText"%");