2010-03-28 4 views
3

Если вы передаете список строк в элемент управления редактирования и задаете режим автозаполнения и источник, то вы автоматически получаете функцию автозаполнения. Мой вопрос: могу ли я получить ту же функциональность в .NET где-то без контроля. Другими словами, я хочу что-то вроде:Как получить функциональность Autocomplete без управления

string[] ProgressivePartialMatch(string[] Strings, string MatchText) 

и поэтому я хочу, чтобы строки обратно, что бы обнаружились в автозаполнения, так сказать.

ответ

0

Вы можете использовать ajax для получения согласованных элементов из базы данных (jQuery будет соответствовать вашим потребностям). И простой javascript (желательно jQuery) для управления редактированием. Вопрос в том, зачем вам это нужно?

P.S. Посмотрите на эту

jQuery Autocomplete and ASP.NET

+0

Я не думаю, что это то, что он хочет. Он скорее хочет функцию, которая возвращает элементы, соответствующие шаблону. –

+0

@Lukasz correct Я ищу в основном запустить StartsWith по массиву, и хотя я могу, конечно, перебирать массив, мне было интересно, предоставляет ли инфраструктура базовый алгоритм автозаполнения, который использует элемент управления редактирования, в некотором роде – Rahul

0

Если она не существует, это просто, чтобы написать

string[] ProgressivePartialMatch(string[] Strings, string MatchText) 
{ 
    return Strings.Where(s => s.StartsWith(MatchText)).ToArray(); 
} 
+0

Это будет работать, но он будет очень медленным для больших наборов данных, поскольку он должен пройти * все * элементы. –

+0

Неплохо, сортировка массива строк и двоичный поиск на нем. Ему не пришлось бы проходить через все предметы, кроме. – Casey

+0

Да, он может быть медленным в большом списке, но он будет становиться все меньше и меньше для каждого набранного символа. Если вход представляет собой отсортированный массив, я мог бы выполнить двоичный поиск, но это не было частью спецификаций. – Gabe

1

Если вы хотите быстро автозаполнения, вы будете хотеть, чтобы реализовать trie. Вы можете найти все элементы, которые начинаются с определенной строки, следуя за trie до тех пор, пока строка «начинается с» не закончится.

+0

Что делать, если он хочет найти все строки, содержащие MatchText, а не только префикс с ним ? – Gabe

+0

@gabe: Правда, это решение не будет работать, если это так. Я думаю, что ответ на вопрос зависит от того, что задает автоответчик. –

+0

Я думаю, что просто начинается с того, что это прекрасно, потому что, как кажется, работает автозаполнение управления редактированием, а не содержит – Rahul

Смежные вопросы