2009-01-27 6 views
2

Je travaille actuellement sur un formulaire de saisie de données relativement complexe, basé sur ASP.NET Web Forms. Une fois le formulaire rempli, nous souhaitons offrir à l'utilisateur la possibilité d'examiner ses commentaires avant de soumettre le formulaire (ainsi que de revenir en arrière pour apporter des modifications à ses données si nécessaire). En raison du grand nombre de champs, je voulais utiliser un contrôle FormView en raison de sa capacité de liaison de données automatique, en supprimant beaucoup de code fastidieux, mais il ne semble pas y avoir un moyen simple d'offrir cette fonctionnalité. À l'heure actuelle, mon approche actuelle utilise une ObjectDataSource pour lier tous les champs de formulaire. J'ai créé deux «modes» d'opération sur la source de données; un mode enregistre temporairement l'objet dans la session de l'utilisateur (permettant ultérieurement la récupération pour les modes lecture seule/édition - ceci facilite la fonction de révision/modification), alors que le second mode effectue réellement l'insertion de la base de données.Propre façon d'offrir une étape de «révision» dans un formulaire ASP.NET

Bien que cela semble raisonnablement robuste à ce stade, il me semble encore assez sale. Je sais que je pourrais utiliser une approche de type Wizard/Multiview, mais alors vous perdez sur les subtilités de la liaison de données automatique (je crois?). Je suis sûr que c'est un problème assez commun, alors comment cela se fait-il typiquement dans un environnement Web Form?

Merci!

Répondre

3

Le projet sur lequel je travaille actuellement utilise une configuration d'assistant personnalisée (pas les assistants asp.net 2.0). Il comprend les différentes étapes dont votre assistant peut avoir besoin, et lorsque vous passez d'une étape à la suivante, le code sauvegarde les valeurs dans une dernière étape (un examen en lecture seule). Lorsque l'utilisateur arrive à cette dernière étape, il peut revenir à l'étape qui doit être mise à jour. Lorsqu'il est satisfait, l'utilisateur soumet l'assistant et les données sont enregistrées dans la base de données. Il s'agit essentiellement d'une série de panneaux dont la visibilité est inversée.

Vous devriez toujours pouvoir utiliser ObjectDataSource pour chacun des champs modifiables, le fait que le panneau ou mutliview soit visible ou non ne devrait pas affecter la liaison. Lorsque vous passez d'un panneau à l'autre, vous pouvez mettre à jour une étape en lecture seule (comme je l'ai déjà dit) tout en gardant les contrôles modifiables liés à ObjectDataSource. Lorsque vous revenez à toutes les étapes qui doivent être modifiées, vous êtes toujours lié. Ainsi, lorsque vous apportez des modifications et que vous cliquez sur Envoyer ou quel que soit le bouton, il doit utiliser ObjectDataSource.

Quelqu'un d'autre a d'autres idées?

+0

Comment avez-vous fait votre affichage en lecture seule? Est-ce un second jeu complet de html à afficher en mode lecture seule? – tbone