2009-05-20 5 views
1

l'un des champs sur mon formulaire est une zone de texte que l'utilisateur tape un ID. C'est la clé étrangère d'une autre table, donc j'ai besoin de faire rebondir les données sur cette table avant de les laisser se soumettre. Je préfère ne pas utiliser textchanged car chaque lettre qu'ils tapent peut entraîner une autre requête, focus lost ne montrerait qu'une erreur ou validerait quand ils sont déjà dans un autre champ (je ne sais pas si ça se déclencherait s'ils cliquaient simplement sur submit).vb.net validation de zone de texte contre une base de données?

Je préférerais ne pas forcer l'attention de quelqu'un à rester dans ce domaine, mais peut-être que c'est la meilleure façon?

Existe-t-il une méthode de veille et d'attente pour voir s'il existe un autre événement de clé entrante dans X secondes? si oui puis-je jeter un coup d'œil pour voir s'il s'agit d'une lettre ou d'un chiffre par rapport à un onglet ou un retour?

Y at-il un autre événement que je devrais accrocher qui est convivial?

Dois-je tirer une copie de cette colonne de la table et comparer en temps réel là-bas? (Je pourrais gérer ajouter un bouton d'actualisation pour tirer un nouveau cache)

Répondre

1

Vous pouvez envisager d'utiliser un contrôle de minuterie pour cela.

Désactiver et activer le contrôle chaque fois que vous appuyez sur la touche pour réinitialiser le délai.

Ensuite, lorsque l'événement de temporisation se déclenche, désactivez le contrôle et interrogez la base de données.

EDIT: Je pense toujours que votre meilleur pari est probablement sur l'événement Lost Focus.

+0

L'événement de mise au point perdu semble se passer correctement sur ma machine. réponse du serveur est rapide comme il semble, donc je ne suis pas sûr de ce qui se passera sur la machine d'un utilisateur. Je désactive brièvement ce champ pendant que je le rebondis contre la base de données, puisque la désactivation du formulaire est perdue là où l'utilisateur essayait de basculer le focus. – Maslow

Questions connexes