2010-03-28 13 views
3

Si vous fournissez une liste de chaînes à un contrôle d'édition et régler le mode de saisie semi-automatique et la source, vous obtenez automatiquement la fonctionnalité autocomplete. Ma question est que je peux obtenir la même fonctionnalité dans .NET quelque part sans contrôle. Autrement dit, je veux quelque chose comme:Comment obtenir la fonctionnalité Autocomplete sans contrôle

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

et je veux que les cordes arrière qui aurait apparu dans la saisie semi-automatique, pour ainsi dire.

Répondre

0

Vous pouvez utiliser ajax pour obtenir des éléments de base de données appariées (jQuery répond à vos besoins). Et javascript simple (de préférence jQuery) pour le contrôle d'édition. La question est pourquoi vous avez besoin de cela?

P.S. Jetez un oeil à ce

jQuery Autocomplete and ASP.NET

+0

Je ne pense pas que ce soit ce qu'il veut. Il veut plutôt une fonction qui renvoie les éléments qui correspondent au motif. –

+0

@Lukasz corriger Je cherche à exécuter essentiellement StartsWith sur un tableau et alors que je peux certainement itérer sur le tableau, je me demandais si le cadre expose l'algorithme de saisie semi-automatique sous-jacente, que les utilisations de contrôle d'édition, d'une certaine façon – Rahul

0

Si elle n'existe pas, il est facile de vous écrire

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

Cela fonctionne, mais il sera terriblement lent pour les grands ensembles de données car il doit passer par * tous * les éléments. –

+0

Ce ne serait pas trop mal, triez le tableau de chaînes et faites une recherche binaire dessus. Il n'aurait pas à passer par tous les éléments que. – Casey

+0

Oui, il pourrait être lent sur une grande liste, mais il deviendrait de plus en plus petit pour chaque caractère tapé. Si l'entrée est un tableau trié, je pourrais faire une recherche binaire, mais cela ne faisait pas partie des spécifications. – Gabe

1

Si vous voulez autocomplete rapide, vous allez vouloir mettre en œuvre un trie. Vous pouvez trouver tous les éléments qui commencent avec une chaîne particulière en suivant le trie jusqu'à ce que la chaîne "commence par" se termine.

+0

s'il veut trouver toutes les chaînes qui contiennent le matchtext au lieu de simplement préfixées avec elle ? – Gabe

+0

@gabe: Certes, cette solution ne fonctionnera pas si c'est le cas. Je suppose que la réponse à la question dépend de ce que le demandeur définit comme saisie semi-automatique. –

+0

Je pense que commence juste avec c'est bien comment la saisie semi-automatique de contrôle d'édition semble fonctionner par opposition à contient – Rahul

Questions connexes