2009-08-21 8 views
2

Lorsqu'un utilisateur utilise une vue Detailsview ou Formview en mode Edit, et essaie de quitter la page en cours, je veux piéger cela et forcer toutes les modifications à enregistrer, comme si le l'utilisateur a cliqué sur le lien de mise à jour. Comment puis-je faire ceci?Asp.net force force sur detailsview/formview

+0

En plus des réponses ci-dessous, j'ai découvert une série d'articles sur ce sujet: http://aspnet.4guysfromrolla.com/articles/042005-1.aspx – dsteele

Répondre

3

Vous ne pouvez pas le faire de manière fiable. Considérez le scénario si leur ordinateur se bloque complètement, ou ils coupent le cordon d'alimentation. Il y a tellement de façons qu'un utilisateur peut laisser une page.

Cependant, vous pourriez mettre quelques précautions. Sur n'importe quel lien sur la page, vous pouvez brancher des événements pour faire l'enregistrement avant qu'ils ne partent. Vous pourriez aussi essayer de faire une sauvegarde après chaque changement de contrôle. Une autre chose que vous pouvez faire est de vous connecter à l'événement window.onbeforeunload et de leur donner un message de confirmation leur demandant s'ils veulent quitter la page, comme le fait le SO lorsque vous avez une réponse non enregistrée. Mais il n'y a rien que vous pouvez faire avec cet événement pour forcer un sauvetage.

+0

Nous utilisons la troisième méthode, accrocher un événement sur onbeforeunload et confirmer que l'utilisateur veut quitter sans enregistrer (nous utilisons un drapeau sale pour savoir quand il y a des données non sauvegardées, donc nous ne montrons pas toujours le message de confirmation). – mbillard

+0

Merci à vous deux. Je suis conscient que je ne peux pas couvrir toutes les situations possibles, mais le plus probable dans mon application est qu'un utilisateur oublie simplement de cliquer sur "Enregistrer" lorsqu'il passe à une autre page. – dsteele