2011-09-14 7 views
1

j'ai une boîte autocomplete faire une recherche dans ma base de données. La commande sql supprime les caractères spéciaux, mais la zone de texte n'affiche pas les résultats, car les résultats renvoyés contiennent des caractères spéciaux. Par exemple, si je tape 1234, le serveur sql retournera 1234 et 123-4, mais la boîte de saisie semi-automatique ne montrera que 1234. Existe-t-il un moyen d'afficher les deux?saisie semi-automatique des caractères spéciaux TextBox Ignore

Répondre

1

Vous pouvez définir la propriété ItemFilter dans la zone Autocomplex pour utiliser votre propre filtrage personnalisé qui inclurait les caractères spéciaux. Quelque chose comme:

//custom logic: how to autocomplete 
this.ItemFilter = (prefix, item) => 
{ 
    return item.ToString().Replace("-","").Contains(prefix); 
}; 

De toute évidence vous auriez besoin d'ajouter plus, mais cela devrait vous aider à démarrer.

EDIT: Pensez plus à ce sujet après avoir répondu aux commentaires, si votre serveur SQL est déjà en train de faire le filtrage que vous voulez, alors réglez AutoCompleteFilterMode sur None. Cela devrait faire l'affaire. :)

+0

Ne serait-il moins coûteux en mémoire/temps cpu pour stocker juste un double de la chose entière avec des tirets dépouillé? –

+0

Je ne pense pas que le code va coûter beaucoup de mémoire/cpu. :) Vous devriez avoir des milliers d'éléments qui, à ce stade, ce code est le moindre de vos problèmes. – Bryant

+0

mais ce ToString.Replace.Contains() n'est-il pas exécuté sur chaque élément à chaque nouveau caractère ajouté? Pas exactement le plus efficace. C'est un appareil mobile - si vous pouviez simplement utiliser Contains() ... –