Ajax Toolkit和JQuery中的自动完成扩展程序限制为“Starts with”

时间:2009-07-16 18:35:08

标签: asp.net jquery ajax autocomplete

AutoComplete实现有很多种,我首先做了一个非常健壮的WPF实现,每个条目都使用关键字,因此在搜索员工时,如果输入名字或姓氏,则无关紧要结果与Google Suggest类似。

我发现JQquery自动完成和ASP.Net自动填充扩展器的限制是没有关键字搜索或包含功能,它只是使用“Startswith”类型搜索。

例如,要搜索“Mark Adams”作为职员名称,您必须输入M,a,r等。如果您输入A,d等,则不会返回任何结果。

有谁知道这方面的计划?现在有什么东西吗?

1 个答案:

答案 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"%");