Расширитель автозаполнения в Ajax Toolkit и JQuery ограничен значением «Начинается с» - PullRequest
1 голос
/ 16 июля 2009

Существует множество вариантов реализации автозаполнения. Сначала я сделал очень надежную реализацию WPF, в каждой записи были ключевые слова, поэтому при поиске сотрудника не имело значения, вводите ли вы имя или фамилию, результаты возвращаются аналогично Google Suggest.

То, что я обнаружил ограничение в автозаполнении JQquery и в расширителе автозаполнения ASP.Net, заключается в том, что поиск по ключевым словам отсутствует или содержит функции, он просто использует поиск типа «Startswith».

Например, чтобы найти «Пометить Адамса» как имя персонала, вам нужно ввести M, a, r и т. Д. Если вы ввели A, d и т. Д., Результат не вернется.

Кто-нибудь знает планы на это? Есть ли сейчас что-нибудь там?

1 Ответ

1 голос
/ 16 июля 2009

Вы, должно быть, пропустили опцию автозаполнения jquery, например

matchContains:true

Это именно то, что вы хотите. Это будет соответствовать Марк Адамс, когда вы печатаете A, D и т. Д.

Редактировать

А для ajaxtoolkit AutoCompleteExtender, боюсь, вы не получите никакого варианта, эквивалентного matchContains в jquery. Но вы можете сделать это легко в методе обслуживания. Установите это как ...

ServiceMethod="GetNameList"

где GetNameList содержит всю логику соответствия данных. Э.Г.

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"%");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...