2008-11-05 3 views
1

Le problème que je rencontre est celui que je crains être un problème de conception, pas un problème de codage, mais je vais quand même poser la question.Problème d'entrée en mode d'édition sur FormView

J'ai une application Web ASP.NET 2.0 qui charge dynamiquement deux contrôles utilisateur différents en fonction d'une valeur provenant d'une base de données. À l'intérieur de chacun de ces contrôles utilisateur se trouve essentiellement un contrôle FormView et un contrôle SqlDataSource qui affiche les valeurs de la base de données. Un de ces contrôles est seulement pour l'affichage des données seulement (j'ai utilisé un FormView pour que je puisse contrôler la mise en page plus facilement) et l'autre FormView j'ai besoin que les utilisateurs puissent éditer.

Sur cette page, l'utilisateur peut sélectionner une liste déroulante pour changer quelle "valeur magique" est utilisée pour charger les contrôles. Cette liste déroulante a auto-postback activé. Lorsque le post-retour se produit, tout semble correct après le chargement dynamique des contrôles, mais lorsque vous cliquez sur le bouton d'édition, il actualise simplement la page sans mettre le FormView en mode "Edition". vous devez cliquer à nouveau sur le bouton Modifier pour que cela se produise.

Alors, maintenant ma question, comment puis-je empêcher le clic de souris supplémentaire d'être nécessaire? Je me dis que ça a quelque chose à voir avec la façon dont les choses sont construites en postback, mais mon cerveau est frit en ce moment et j'espérais que quelqu'un là-bas a peut-être déjà résolu ce problème.

Répondre

1

où (quel événement) chargez-vous les contrôles utilisateur? il est probable que votre bouton d'édition est déjà câblé (à rien) au moment où vos contrôles sont chargés ...

EDIT: placez les points d'arrêt sur page_load et selected_index_changed pour voir quand ils se produisent; il se peut que page_load arrive en premier ce qui efface le wireup; chargez-vous les commandes protégées par! IsPostBack et ViewState est-il activé? Viewstate est peut-être en train de restaurer vos contrôles automatiquement, mais votre page_load les efface à nouveau ...

... il est difficile d'être sûr du code. Vous pouvez également activer le suivi et ajouter une sortie de trace à vos méthodes pour voir exactement ce qui se passe quand et regarder l'arborescence html générée

+0

J'utilise l'événement Page_Load pour charger les contrôles initialement, puis l'élément Selected_Index a été modifié événement pour la liste déroulante. Ce qui me dérange, c'est que si je ne déclenche pas l'événement modifié SelectedIndex, tout fonctionne comme prévu. –

+0

@ [Robert Iver]: voir les modifications –

Questions connexes