2010-11-28 15 views
0

Je crée une page que les utilisateurs peuvent télécharger un fichier sur le serveur Web. Après le téléchargement de la page aura alors un lien vers le fichier qui vient d'être téléchargé, ainsi que tous les autres fichiers qui ont déjà été téléchargés. Comme je crée par programme des liens vers les fichiers qui ont été téléchargés, je dois le faire dans page_init, sinon le bouton de lien ne déclenchera pas son événement quand on clique dessus. Ma page Web fait tout cela - elle crée les boutons de lien et quand je clique dessus, elle appelle la méthode d'événement requise, c'est-à-dire un sous pour télécharger le fichier. OK, le problème que j'ai rencontré est: lorsque je clique sur upload (pour télécharger le fichier) - le sous-élément page_init est appelé, affichant tous les fichiers précédemment téléchargés comme des boutons de lien. Ensuite, mon sous-dossier btnUpload_click est appelé, qui télécharge mon fichier actuel.cycle de vie de page et ne pas être en mesure d'afficher les contrôles en dehors de page_init lorsque vous essayez de les créer par programme

Le seul problème est que le fichier actuel n'a pas été affiché? Je peux seulement afficher des liens dans le page_init, mais parce que btnUpload est appelé après le page_init, le fichier actuel n'est pas téléchargé qu'après page_init et donc pas dislayed?

Des idées pour le contourner?

Répondre

0
  1. liste ont tous les liens côté serveur en tant que membre de votre classe: List<LinkButton> myLinks = new List<LinkButton>();

  2. Lorsque vous construisez les liens ne pas les ajouter à la page encore, les ajouter à la liste à la place: myLinks.Add(oNewLink);

  3. Dans la méthode btnUpload_Click, ajoutez un nouveau lien à la liste globale avec les valeurs appropriées. Ajoutez les liens vers la page dans la fonction Page_PreRender, ce qui se produit après le clic du bouton.

Si vous avez besoin d'aide pour implémenter cette logique, faites-le moi savoir. :)

+0

J'ai essayé ceci et ajouté les contrôles à une liste et les a ajoutés à la page à Page_prerender. Malheureusement, même problème, il n'ajoute pas le gestionnaire d'événements click. Quand je clique dessus, rien ne se passe. – thegunner

0

Si vous obtenez/enregistrez la liste des fichiers précédemment téléchargés à partir de la variable de session ou de la base de données, vous pouvez simplement rediriger la page vers elle-même à la fin de l'événement btnUpload_click. Comme Response.Redirect ("PageName.aspx");