IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

ASP.NET Discussion :

[VB.NET] [WebControl] Collection de Button


Sujet :

ASP.NET

  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    310
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 310
    Par défaut [VB.NET] [WebControl] Collection de Button
    Bonjour à tous !

    J'ai un problème avec un webcontrol qui doit comporter des Buttons. Je n'arrive pas à catcher les évènements associés au bouton.

    une solution VB.Net :
    - 1 Projet WebControl Library "TESTBUTTON"
    - 1 projet Web avec référence vers "TESTBUTTON"

    Code de "TESTBUTTON" :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
     
    Imports System.ComponentModel
    Imports System.Web.UI
    Imports System.Drawing
     
    <DefaultProperty("Text"), ToolboxData("<{0}:TestButton runat=server></{0}:TestButton>")> Public Class TestButton
        Inherits System.Web.UI.WebControls.WebControl
     
        Public btn As System.Web.UI.WebControls.Button
        Public Event Clickage As EventHandler
     
        Public Sub New()
            btn = New System.Web.UI.WebControls.Button
     
        End Sub
     
        Private Sub btn_Clickage(ByVal sender As Object, ByVal e As EventArgs)
     
             RaiseEvent Clickage(sender,e)        
        End Sub
     
      Protected Overrides Sub CreateChildControls()
     
            '' TextBox creation
            btn.ID = "id0"
            btn.Text = "Go0"
            AddHandler btn.Click, AddressOf btn_Clickage
            Me.Controls.Add(btn)
     
     
        End Sub
     
     
        Protected Overrides Sub Render(ByVal output As System.Web.UI.HtmlTextWriter)
            btn.RenderControl(output)
        End Sub
     
    End Class
    Compilation : Oki

    et dans ma page web je fais un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
       AddHandler myTestButton.Clickage , AddressOf ClickTest
    avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
      Private Sub ClickTest(ByVal sender As Object, ByVal e As EventArgs)
            Response.Write("<h1>" & sender.GetType.ToString() & "</h1>")
        End Sub
    Ca marche bien

    Mon problème maintenant c'est de mettre autant de bouton que je le veux dans une collection !

    quelqu'un sait comment faire ?
    je vous remercie a+

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    310
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 310
    Par défaut
    le code que je rajoute pour prendre en compte la collection :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
     
     
    Public Sub add(ByVal id As String, ByVal text As String, ByVal e As EventHandler)
            Dim b As System.Web.UI.WebControls.Button
     
            b = New Button
            b.ID = id
            b.Text = text
            'AddHandler b.Click, AddressOf btn_Clickage
            lstBtn.Add(b)
     
     
     
        End Sub
     
        Protected Overrides Sub CreateChildControls()
     
            '' TextBox creation
            btn.ID = "id0"
            btn.Text = "Go0"
            AddHandler btn.Click, AddressOf btn_Clickage
            Me.Controls.Add(btn)
            For Each b As Button In lstBtn
                b.ForeColor = Color.Red
                AddHandler b.Click, AddressOf btn_Clickage
                Me.Controls.Add(b)
            Next
     
     
     
     
        End Sub
     
     
        Protected Overrides Sub Render(ByVal output As System.Web.UI.HtmlTextWriter)
            output.Write("<table><tr><td>")
            For Each b As Button In lstBtn
                b.RenderControl(output)
            Next
            btn.RenderControl(output)
            output.Write("</td></tr></table>")
        End Sub
    Les boutons sont bien créés mais en mode debug il va jamais dans btn_Clickage

    Alors qu'avec le bouton hors collection ('Btn') ca marche toujours.

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    310
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 310
    Par défaut
    Si je fais un WebControl qui contient un seul bouton, comme je vous l'ai dis ca fonctionne. Mais si je fais un autre webcontrol qui sera une collection du 1er webcontrol (avec le bouton qui marche) mais cela ne marche pas non plus.

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    310
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 310
    Par défaut
    N'est pas la gestion des objets par VB.net ?

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    310
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 310
    Par défaut
    En fait dans la fonction Add

    Il faut rajouter :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Me.Controls.Add(btn)
    Mais j'ai un nouveau problème. GRRRR !

    L'évènement se déclenche bien mais pourquoi il rentre 2 fois dans l'évènement ?

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    310
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 310
    Par défaut
    Je continue mon Monologue.

    Il s'avère que l'évènement qui se fait 2 fois, provient du fait que mon WebControl de base hérite de Button. Si je fais hérité de WebControl et qu'a l'intérieur du webcontrol je met une variable de type button. Tout s'arrange

    Donc maintenant c'est résolu.

    Merci de votre aide

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [vb.net 2.0] CustomWebControl & Button
    Par Wells dans le forum ASP.NET
    Réponses: 3
    Dernier message: 21/05/2007, 09h52
  2. Réponses: 12
    Dernier message: 09/02/2007, 18h04
  3. [VB.NET] contrôles & collections
    Par olivier57b dans le forum Windows Forms
    Réponses: 6
    Dernier message: 07/09/2006, 10h40
  4. [VB.NET] Dériver la classe Button
    Par toniolol dans le forum Windows Forms
    Réponses: 4
    Dernier message: 20/12/2005, 09h48
  5. [VB.NET] RequiredFieldValidator et 2 Buttons
    Par Redouane dans le forum ASP.NET
    Réponses: 3
    Dernier message: 19/01/2005, 10h46

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo