Accueil > Forum > > > > [VB.NET] Suppression d'un UserControl dynamiquement
[VB.NET] Suppression d'un UserControl dynamiquement
lundi 7 août 2006 à 16:52:46 |
[VB.NET] Suppression d'un UserControl dynamiquement

Glumph
|
Bonjour à tous,
J'essaie de créer un formulaire dynamiquement, à partir d'un usercontrol. J'ai une page "Main" possédant un Panel et un bouton Ajouter. A chaque clic sur ce bouton, un UserControl s'ajoute à mon Panel. Chaque UserControl est composé d'une textbox et d'un bouton "Supprimer", qui aurait pour fonction de... supprimer le UserControl du Panel.
Scénario classique: j'ajoute quelques usercontrols en cliquant sur le 1er bouton, je remplis ensuite quelques textbox... et je supprime un de ces usercontrols... Malheureusement, je n'arrive pas à maitriser cet événement: essayez vous-même, ma procédure ne supprime pas toujours le Usercontrol voulu... D'ailleurs, elle ne supprime pas toujours un Usercontrol tout court!!!  Pourtant j'ai bombardé de msgbox pour m'afficher les valeurs de mes variables à certains moments stratégiques...
Voilà un copier-coller de mon code:
Fichier AlbumNouveau.aspx: <%@ Page Language="VB" AutoEventWireup="false" CodeFile="AlbumNouveau.aspx.vb" Inherits="Albums_AlbumNouveau" %>
<%@ Reference Control="AjoutePhoto.ascx" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head id="Head1" runat="server"> <title>Arch[i]mages</title> <link rel="stylesheet" type="text/css" href="../Design/stylesheet.css"> </head> <body> <form id="form1" runat="server"> <p> </p> <table border="1" cellpadding="0" cellspacing="0" style="width: 100%; height: 100%"> <tr> <td style="vertical-align: text-top; text-align: center;" width="20%"> </td> <td style="text-align: center"> <h2> Nom du nouvel album</h2> <br /> <br /> <table style="width: 100%"> <tr> <td width="25%" style="text-align: left" valign="top"> Nom de l'album:<br /> <asp:RequiredFieldValidator ID="Validator1" runat="server" ControlToValidate="txtAlbumNom" ErrorMessage="(requis)"></asp:RequiredFieldValidator></td> <td style="width: 100px"> <asp:TextBox ID="txtAlbumNom" runat="server" ToolTip="Entrez ici le nom de l'album photo à créer" Width="100%" Wrap="False"></asp:TextBox></td> <td style="width: 100px; text-align: right"> Catégorie:</td> <td style="width: 100px"> </tr> <tr> <td style="height: 55px; text-align: left;" width="25%" valign="top"> Description:<br /> <asp:RequiredFieldValidator ID="Validator2" runat="server" ControlToValidate="txtResume" ErrorMessage="(requis)"></asp:RequiredFieldValidator></td> <td colspan="3" style="height: 55px"> <asp:TextBox ID="txtResume" runat="server" Height="100%" TextMode="MultiLine" ToolTip="Entrez ici une description du contenu de l'album" Width="100%"></asp:TextBox></td> </tr> <tr> <td width="25%" style="text-align: left" valign="top"> Lien externe:<br /> <asp:RegularExpressionValidator ID="Validator3" runat="server" ControlToValidate="txtHyperlink" ErrorMessage="(non valide)" ValidationExpression="http(s)?://([\w-]+\.)+[\w-]+(/[\w- ./?%&=]*)?"></asp:RegularExpressionValidator></td> <td colspan="3"> <asp:TextBox ID="txtHyperlink" runat="server" Width="100%" Wrap="False"></asp:TextBox></td> </tr> </table> <br /> <table style="width: 95%"> <tr> <td style="height: 18px" width="80%"> Nombre de photos à ajouter: <asp:Label ID="lblNbPhotos" runat="server" Text="lblNbPhotos"></asp:Label></td> <td style="height: 18px" width="20%"> <asp:Button ID="btnAjouter" runat="server" Text="Ajouter" ToolTip="Cliquez ici pour ajouter une photo" CausesValidation="False" /></td> </tr> </table> <asp:CustomValidator ID="Validator4" runat="server" ErrorMessage="Vous devez proposer au moins une photo"></asp:CustomValidator><br /> <br /> <asp:Panel ID="pnlPhotos" runat="server" Height="250px" ScrollBars="Vertical" Width="100%"> </asp:Panel> <hr /> <asp:Button ID="btnValidate" runat="server" Text="Envoyer" /></td> </tr> </table> </form> </body> </html>
Fichier AlbumNouveau.aspx.vb: Partial Class Albums_AlbumNouveau Inherits System.Web.UI.Page
Protected Sub Page_Init(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Init Dim i As Integer If Session.Item("Control") IsNot Nothing Then For i = 1 To Session.Item("Control") CreateControl("Photo" & i.ToString) Next Else Session.Add("Control", 0) Me.lblNbPhotos.Text = "Aucune" End If End Sub
Protected Sub btnAjouter_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnAjouter.Click Session.Item("Control") += 1 Me.lblNbPhotos.Text = Session.Item("Control").ToString CreateControl("Photo " & Session.Item("Control")) End Sub
Protected Sub CreateControl(ByVal ID As String) Dim pnlDetailPhoto As New ASP.AjoutePhoto, lblBr As New Label, lblID As Label pnlDetailPhoto.ID = ID Me.pnlPhotos.Controls.Add(pnlDetailPhoto) AddHandler pnlDetailPhoto.Destroy, AddressOf RetirePhoto
lblID = pnlDetailPhoto.FindControl("lblID") lblID.Text = ID lblBr.ID = "Saut" & ID lblBr.Text = "<br>" Me.pnlPhotos.Controls.Add(lblBr) End Sub
Protected Sub btnValidate_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnValidate.Click 'Vérification qu'une photo au moins est ajoutée If Session.Item("Control") = 0 Then Me.Validator4.Validate() End If End Sub
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load Me.lblNbPhotos.Text = Session.Item("Control").ToString End Sub
Private Sub RetirePhoto(ByVal sender As Object, ByVal e As System.EventArgs) Dim pnlDetailPhoto As ASP.AjoutePhoto Dim objFileUpload As FileUpload pnlDetailPhoto = sender MsgBox("Procédure Sub RetirePhoto(" & pnlDetailPhoto.ID.ToString & ")") objFileUpload = pnlDetailPhoto.FindControl("objFileUpload") If objFileUpload.FileName <> "" Then 'Demande confirmation If MsgBox("Etes-vous sûr de vouloir supprimer cette photo ?", MsgBoxStyle.YesNo, "Avertissement") = MsgBoxResult.Yes Then MsgBox("La photo " & pnlDetailPhoto.ID.ToString & " sera supprimée", MsgBoxStyle.OkOnly, "Ok") End If End If Session.Item("Control") -= 1 MsgBox("Reste " & Session.Item("Control").ToString & " controls") objFileUpload.Dispose()
End Sub
End Class
Fichier AjoutePhoto.ascx:
<%@ Control Language="VB" AutoEventWireup="false" CodeFile="AjoutePhoto.ascx.vb" Inherits="Albums_AjoutePhoto" ClassName="AjoutePhoto"%> <table width="95%"> <tr> <td rowspan="4" width="25%"> <asp:Image ID="Image1" runat="server" ToolTip="Photo" /> <br /> <asp:Label ID="lblID" runat="server" Text="Label"></asp:Label></td> <td width="50%"> <asp:FileUpload ID="objFileUpload" runat="server" Width="100%" /></td> <td width="10%"> <asp:Button ID="btnSupprimer" runat="server" Text="Supprimer" ToolTip="Supprimer cette photo" CausesValidation="False" /></td> </tr> <tr> <td colspan="2"> Titre:</td> </tr> <tr> <td colspan="2" rowspan="2" style="height: 26px"> <asp:TextBox ID="txtTitre" runat="server" ToolTip="Ajoutez ici le texte à insérer sous la photo" Width="100%" Wrap="False"></asp:TextBox></td> </tr> <tr> </tr> </table> <br /> <br /> <hr />
Fichier AjoutePhoto.ascx.vb: Public Class Albums_AjoutePhoto Inherits System.Web.UI.UserControl
Public Event Destroy(ByVal sender As Object, ByVal e As System.EventArgs)
Protected Sub btnSupprimer_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnSupprimer.Click RaiseEvent Destroy(Me, New System.EventArgs) End Sub End Class
Ca me rendrait un grand service si vous pouviez jeter un coup d'oeil là-dessus, je tourne en rond depuis une semaine...!
Merci
|
|
lundi 7 août 2006 à 23:16:46 |
Re : [VB.NET] Suppression d'un UserControl dynamiquement

jesusonline
|
Bonsoir, MsgBox ??? tu sais qu'il y a des options un peu mieux pour faire du debug ... utilises au moins le trace.write ou alors tu peux regarder ce tutorial http://www.aspfr.com/tutoriaux/DEBUG-ASP-NET-AVEC-VISUAL-STUDIO_384.aspx Pour ton problème, il faut absolument rajouter les controles dynamique dans le page_init sinon les events ne seront pas déclenché ... j'ai pas regardé le code mais je pense que c'est pour ca que cela plante ... Cyril - MVS - MCP
|
|
mardi 8 août 2006 à 01:20:05 |
Re : [VB.NET] Suppression d'un UserControl dynamiquement

Glumph
|
Oui oui je te remercie du conseil, évidemment j'ai aussi utilisé les points d'arrêts etc...
Par contre je ne comprends pas bien ta remarque concernant les contrôles dynamiques...? J'ai justement une boucle dans mon Page_Init qui s'en charge: For i = 1 To Session.Item("Control") CreateControl("Photo" & i.ToString) Next
Ce n'est pas "suffisant" ?
Merci de ton aide... [:p]
|
|
mardi 8 août 2006 à 09:18:10 |
Re : [VB.NET] Suppression d'un UserControl dynamiquement

jesusonline
|
Je viens de rapidement regardé ton code. Il ne faut pas utiliser MsgBox !!! msgbox ouvre une popup en local sur le serveur mais absolument pas sur le client donc une partie de ton code ne fonctionera pas ... Je ne comprend pas ou tu supprimes ton UserControl, tout ce que tu fais c'est décrementer ta variable session lors du remove ... ce qu'il faudrais c'est mettre un visible=false sur ton contrôle pour qu'il ne soit plus présent ... Je n'ai pas compris pourquoi tu passes par ca, j'ai l'impression que tu es en train de recréer un repeater ou datalist ... ce serait surement plus simple de les utiliser :-) Cyril - MVS - MCP
|
|
mardi 8 août 2006 à 14:36:38 |
Re : [VB.NET] Suppression d'un UserControl dynamiquement

Glumph
|
Ben en fait ce que je cherche à faire, c'est une interface pour permettre à des utilisateurs d'uploader une série de photos, en vue de créer un album.
Chaque usercontrol rassemblera des infos sur une photo, essentiellement le chemin du fichier à uploader sur le serveur et un nom associé à la photo. En plus donc de ces deux contrôles, un bouton "Supprimer" permettra d'éliminer une seule des n photos que l'utilisateur voudra uploader.
Je ne sais pas si je m'y prends bien: si tu as une autre solution, je suis prenneur aussi! Quoique j'aimerais bien quand même comprendre pourquoi je n'arrive pas à mes fins...
En plus de décrémenter ma variable, je fais aussi un objFileUpload.Dispose(): ce n'est pas bon? Enfin, comment je pourrais utiliser un Repeater sans connaître le nombre de photos que l'utilisateur voudra uploader, tout en lui permettant à tout moment de supprimer une des photos qu'il voulait enregistrer...?
|
|
mardi 8 août 2006 à 14:43:31 |
Re : [VB.NET] Suppression d'un UserControl dynamiquement

jesusonline
|
objFileUpload.Dispose() a mon avis ca ne sert à rien :s essaye en le mettant à visible=false on en le supprimant de la collection de controls.
pour ce qui est du repeater, dés que j'ai une liste je l'utilise :-) c'est beaucoup plus simple, mais ca devrait aussi fonctionner comme tu fais. Cyril - MVS - MCP
|
|
Cette discussion est classée dans : end, system, control, session, pnldetailphoto
Répondre à ce message
Sujets en rapport avec ce message
Session_End et Server.MapPath [ par darunia ]
Salut,Lors de la fermeture de session, je veux effacer un dossier :System.IO.Directory.Delete(Server.MapPath("temp/" + Session.SessionID), true);
Récupérer une valeur d'un Control User acsx dans un Label [ par ryckbosch ]
Bonjour,Je ne sais pas si j'utilise correctement le passage des variables entre un Control User (Nbre_Sites.ascx) et la page qui l'appelle (Test.aspx)
Probleme Fin de Session [ par visualresine ]
Bonjour,Je voudrais qu'en fin de session mon site affiche une messagbox puis ensuite qu'il renvoie automatiquement sur le page de login.J'ai donc ecri
Castage Automatique??? [ par Coolpix08 ]
Bonjour voila encore une question sur les typesJ'ai réussi à lister tous mes controls, à prendre le type Control comme base pour n'importe quel type.L
débutant en asp.net - pb navigation dans dataview [ par bdl20042000 ]
Bonjour, je débute en asp.net. Je souhaite avoir les mêmes facilités de navigation que avec un recordset sous VB. Aussi après avoir regarder un peu le
Perte d'une session anormalement [ par lucie12 ]
Bonjour,J'ai un formulaire qui ajoute des données dans une base. Lorsque je clique sur le bouton ajouter, il m'insere les infos et met certaines varia
usercontrole : La référence d'objet n'est pas définie à une instance d'un objet. [ par coulis ]
Bonjour à tous,Voilà mon problème: je viens de créer une nouvelle application .net et j'ai l'erreur suivante dès que je positionne un usercontrol ? La
La référence d'objet n'est pas définie à une instance d'un objet [ par buze63 ]
Salut G une page aspx avec un bouton et un usercontrol qui possede un label et un textbox et je voudrai que lorsque je clic sur le bouton un message a
[ASP.NET][C#] récupérer un événement click d'un custom web control [ par outcast_fr ]
Bonjour, j'ai créé un petit custom web control (pas de user control) composé d'un label et d'un bouton. Mon but c'est de récupérer l'événement associé
Variable session et user control [ par StephaneNet ]
Bonjour à tous,J'ai un petit soucis et peut etre pourrez vous m'aider. J'ai un user control sur la page company.asp avec un lien vers ma page d'accu
Livres en rapport
|
Derniers Blogs
IMAGINE CUP 2012, MAKE A SIGN EN FINALEIMAGINE CUP 2012, MAKE A SIGN EN FINALE par junarnoalg
Voilà qui est fait, la nouvelle est officielle ! L'équipe belge "Make a Sign" va au pays des kangourous défendre son projet dans la catégorie Software Design. http://www.imaginecup.com/CompetitionsContent/Competition/WorldwideFinalists.aspx V...
Cliquez pour lire la suite de l'article par junarnoalg KINECT 1.5 IS OUT !KINECT 1.5 IS OUT ! par Vko
La version 1.5 du Kinect For Microsoft vient tout juste de sortir ! Plein de nouveautés: Tracking de squelette en Near Mode Détection en position assise Détection faciale avec un SDK dédié Documentation et des guideline (enfin) Un out...
Cliquez pour lire la suite de l'article par Vko LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) par richardc
Mise à jour des Web API du 14 Mai
Réservez dès maintenant votre journée du 20 juin pour le Windows Azure Dev Camp 2012 à Paris
Mise à jour de Team Foundation Service
MechCommander 2 sur Windows 8
Entity Framework 5 Release Candidate e...
Cliquez pour lire la suite de l'article par richardc REACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITERREACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITER par Groc
Une mauvaise utilisation de rx lors de l'écriture d'une couche d'accès à des services peut conduire à des cas embarassants avec des erreurs mal gérées, des appels qui ne partent lorsqu'ils le devraient, et même des résultats incorrects . le tout nuis...
Cliquez pour lire la suite de l'article par Groc SHAREPOINT BLOG SITE, PROBLèME D'ARCHIVESSHAREPOINT BLOG SITE, PROBLèME D'ARCHIVES par junarnoalg
Dernièrement, nous avons migré le site
myTIC
vers un nouveau serveur SharePoint 2010. Dans les contenus que nous vouloins récupérer, nous avions un certain nombre de blogs.
Nous avons utilisé les commandes Power...
Cliquez pour lire la suite de l'article par junarnoalg
Forum
STABILITé DU DéBIT 3GSTABILITé DU DéBIT 3G par benzekrighizlane
Cliquez pour lire la suite par benzekrighizlane
Logiciels
sDEVIS-FACTURES vlPRO (8.1.0.3)SDEVIS-FACTURES VLPRO (8.1.0.3)sDEVIS-FACTURES vlPRO a été mis au point pour les particuliers, créateurs, entrepreneurs, artisa... Cliquez pour télécharger sDEVIS-FACTURES vlPRO 974 Application Server (12.2.4.6)974 APPLICATION SERVER (12.2.4.6)Développez de puissantes applications dans un environnement de 'cloud computing', clusterisé, séc... Cliquez pour télécharger 974 Application Server vPicture (1.4.2.1)VPICTURE (1.4.2.1)Avec vPicture, hébergez vos images facilement et rapidement.
vPicture est un utilitaire simple, ... Cliquez pour télécharger vPicture Easy-Planning (2.2.1.6)EASY-PLANNING (2.2.1.6)Easy-Planning permet de créer des plannings sous la représentation de diagrammes et est adapté au... Cliquez pour télécharger Easy-Planning COM-BACKUP (2.0)COM-BACKUP (2.0)
COM-BACKUP est un logiciel de sauvegarde qui permet de planifier les sauvegardes de vos dossiers ...
Cliquez pour télécharger COM-BACKUP
|