2010-08-12 10 views
0

J'ai un contrôle utilisateur personnalisé qui consiste en une liste dynamique de contrôles, avec un bouton statique déclaré (avec la déclaration OnClick) sur la page aspx . Le bouton affiche ou masque un panneau contenant la liste de contrôle dynamique.Contrôles ajoutés dynamiquement provoquant le déclenchement de l'événement de bouton statique après un deuxième clic

Je trouve un problème que je présumer est lié aux contrôles ajoutés dynamiquement, où la méthode d'événement de bouton (même si elle n'est pas ajoutée dynamiquement), se déclenche uniquement sur le second clic. I pense ceci a quelque chose à voir avec le fait que la méthode d'événement de bouton est câblée avant que les contrôles soient créés, et la méthode d'événement est câblée incorrectement sur la publication quand il y a soudainement de nouveaux contrôles dynamiques sur la page. Au second clic, cela fonctionne parce que les contrôles dynamiques ont tous été créés et sont simplement persistés. (S'il vous plaît quelqu'un corrigez-moi si je me trompe - J'ai passé toute la journée à chercher :()

Ma question est, comment faire J'ai essayé de câbler l'événement pour le bouton dynamiquement aussi, mais je ne suis pas sûr de l'ordre dans lequel mettre toutes ces déclarations

+0

si vous ne recevez pas de réponse, poster votre ASPX et le code derrière ... –

Répondre

0

Etes-vous sûr que le bouton affiche sur le premier clic? dans le cas contraire, il pourrait être quelque chose lié au côté client. en supposant que le bouton ne messages de retour sur la première fois et son bouton soumettre (UseSubmitBehavior = « true ») alors problème peut être dû à

  1. Le contrôle de l'utilisateur peut être ajouté après le traitement des données (le traitement des données est responsable de l'augmentation de l'événement de bouton)
  2. Pour une raison quelconque, l'ID de contrôle de bouton (ID unique) change en fonction des postbacks ou des changements d'ID de bouton. post traitement des données au moment de rendre le contrôle.

Dans le cas, vous n'êtes pas en mesure de résoudre le problème, vous pouvez aller autre façon - en examinant les données post telles que

if (Request.Form[button.UniqueID] != null) { // Do button click processing }