2012-09-13 7 views
0

J'utilise un formulaire (FormView) avec liaison de données (ObjectDataSource) et tous mes champs de saisie sont liés en utilisant '<%# Bind("field") %>'.Formulaire uniquement enregistrement lorsque les entrées ont perdu le focus

Tout fonctionne très bien, mais j'ai deux problèmes (que je trouve diverses indications sur comme l'utilisation this.Validate() ou .EndEdit() - mais aucun ne semble fonctionner):

  • Les inscriptions ne sont enregistrées après avoir quitté le champ de saisie il perd le focus

Disons que j'ai une zone de texte avec un ID de nom et que je saisis "George". Lorsque je passerais à la zone de texte suivante ou lorsque je clique ailleurs et que je clique sur Enregistrer, tout est enregistré. Mais lorsque je garde le focus dans la zone de texte, la valeur n'est pas enregistrée. Pourquoi cela arrive-t-il? Quelle magie puis-je utiliser pour contourner cela (JavaScript à la rescousse?).

  • Je définis la valeur de champ d'une zone de texte (element.value) via Javascript (en sélectionnant quelque chose dans une liste déroulante).

Le même problème que ci-dessus s'applique, uniquement lorsque je donne le focus de la zone de texte et que la valeur est sauvegardée. Cela crée le problème que je veux seulement que l'utilisateur choisisse quelque chose dans la liste déroulante (la zone de texte est mise à jour en conséquence) et continue - je ne veux pas que l'utilisateur clique dans la zone de texte et tabule encore.


Edit:

Le deuxième problème que je résolus maintenant en mettant l'accent sur ma zone de texte via Javascript (textbox.focus();) et juste après mettre le focus sur la zone de liste déroulante (combobox.focus();) et le tour est joué - Cela me semble assez hack, n'est-ce pas? Je suppose que c'est assez commun, mais mon puissant Google fu n'a pas m'aider à trouver une solution simple.

+1

Avez-vous essayé de forcer le focus sur le bouton sur lequel vous avez cliqué, puis de l'envoyer? –

+0

Non, mais je pourrais le faire pour le seul domaine que je suis en train de remplir avec JS - le problème général de sauvegarde reste. –

Répondre

0

Un problème similaire peut apparaître dans le développement de Winforms lorsque vous travaillez avec les contrôles DataGridView. J'attache généralement une certaine logique à l'événement Click du bouton de soumission pour provoquer la validation du DataGridView. Je soupçonne qu'une solution similaire fonctionnerait pour vous ici.

+0

Été là, fait cela. Mon bouton de sauvegarde a 'this.Validate()' et j'ai ajouté 'Page.Validate()' sur les UserControls qui contiennent les champs à sauvegarder. –

Questions connexes