2010-07-25 2 views
2

J'ai un FormView lié dans le fichier de code à une liste générique. Maintenant, lors de la modification d'un enregistrement, je souhaite accéder aux Keys et NewValues ​​à partir du paramètre FormViewUpdateEventArgs de la méthode du gestionnaire d'événements ItemUpdating. D'après ce que j'ai essayé et recherché sur Internet jusqu'à maintenant, j'ai appris que les valeurs mises à jour ne sont disponibles que si Formview est défini comme un contrôle de source de données sur la page de balisage sinon elles seraient nulles . Est-ce vrai?Récupération de clés et de valeurs NewValues ​​dans une vue FormView avec liaison de données manuelle

En second lieu, en ce moment je suis CASTING la propriété objet sender à FormView et remplir individuellement chaque objet en utilisant la méthode FindControl pour trouver et récupérer les valeurs présentes dans les commandes. Est-ce la meilleure façon de faire cette tâche?

À titre d'exemple, voici ce que je fais atm:

FormView currentForm = (FormView)sender; 
ListObject.ID = new Guid(((HiddenField)(currentForm.FindControl("hdnID"))).Value); 
ListObject.Name = ((TextBox)(currentForm.FindControl("txtName"))).Text; 

Merci pour les gars d'aide!

+1

FindControl est toujours "pas la meilleure façon" de faire les choses parce que c'est un peu cher. vous devriez vraiment l'utiliser en dernier recours. Dans votre cas, je pense que vous devriez vraiment envisager d'utiliser un ObjectDataSource au lieu de le lier directement directement dans votre code –

Répondre

0

En fonction de ce que vous faites, je vous suggérerais pas utiliser un FormView. FormView est génial lorsque vous travaillez avec des sources de données, mais échoue, lorsque vous manipulez les données liées manuellement comme vous le faites, vous surchargez et construisez manuellement le formulaire, et il serait plus simple de créer simplement un formulaire HTML et ASP.Net Server Side Controls.

FindControl est une opération coûteuse et peut devenir difficile. L'attribution simple d'une valeur pendant la boucle de vos données à un contrôle côté serveur sera plus rapide.

Alternativement, comme suggéré, utilisez un ObjectDataSource et liez vos données à FormView de cette manière.

Questions connexes