2009-03-04 5 views
0

Je crée un explorateur de fichiers dans ASP.Net mais j'ai rencontré un problème qui, selon moi, est lié au câblage d'événements sur les contrôles dynamiques. Je vais expliquer ce que mon code fait ici:Ajout de ClickEvent sur les LinkButtons dynamiques dans OnLoadComplete

Quand ma page charge (OnLoad) j'appelle une méthode (createStuff()) qui crée un certain nombre de linkbuttons (représentant des dossiers dans un répertoire courant) qui sont câblés à un événement cela change le répertoire courant à celui qui est associé au linkbutton. Comme un événement linkbutton-click est déclenché après l'appel d'OnLoad (et que le répertoire courant est donc d'abord modifié après onload), les linkbuttons ne sont pas mis à jour pour refléter le nouveau répertoire courant (ils sont créés avant le répertoire courant changé par l'événement click). Par conséquent, j'appelle également createStuff() dans OnLoadComplete, ce qui entraîne la mise à jour des boutons de liaison et reflète les dossiers dans le nouveau répertoire courant. CEPENDANT (et c'est mon problème) il semble que le fil de l'événement (Click + = new EventHandler (changeDirectory)) que je fais dans createStuff() ne fonctionne pas vraiment quand la méthode est appelée dans OnLoadComplete (OnLoadComplete est appelé après un événement linkbutton-click a été déclenché). Le résultat est que, bien que la propriété text des boutons link reflète les dossiers dans le nouveau répertoire, cliquer sur les linkbuttons ne déclenche pas l'événement.

Comment puis-je résoudre ce problème? J'ai essayé de recâbler les événements sur les LinkButtons dans OnLoad mais le même résultat.

Nous vous remercions à l'avance

Simon, Danemark

+0

Pouvez-vous s'il vous plaît fournir un exemple de code? Plus précisément, je me demande si vous avez spécifié des valeurs d'ID pour les contrôles créés dynamiquement dans createStuff(). –

+0

Salut, merci de commenter, voici la méthode createStuff() -: http://rafb.net/p/k0YlrU67.html Comme vous pouvez le voir, je ne spécifie pas de valeurs ID. – user73738

Répondre

3

a toujours placé la propriété ID du LinkButton.

Deux causes communes de ce comportement sont (1) les gestionnaires d'événements manquants et (2) les propriétés d'ID manquantes. Puisque vous êtes sûr que votre gestionnaire d'événements est attaché pendant OnLoad, alors les propriétés d'ID manquantes sont les vrais responsables.

Lorsqu'un utilisateur clique sur votre LinkButton sur le client, un PostBack est envoyé au serveur qui nomme le LinkButton par ID. Si vous ne vous assurez pas que votre contrôle a le même ID entre PostBacks, votre gestionnaire d'événements peut ne pas être levé.

+0

J'ai résolu le problème simplement en redirigeant le navigateur vers la page après que l'événement de clic de lien de lien s'était produit (le gestionnaire de fichiers est stocké dans une variable de session). Mais je pense que votre solution (qui fonctionne) est meilleure, merci de nous aider! – user73738

Questions connexes