Salut, c'est toujours moi ^^

J'ai de nouveau un problème parce que mon bouton ne se lie pas à mon événement.

Mis à part que le code soit sale (Extrem Programing oblige...) et non optimisé encore, est ce que vous voyez une erreur flagrante qui fait que mon événement ne puisse s'attacher à mon bouton crée dynamiquement ?

J'ai l'impression qu'il perd la référence de mon bouton au cours de l'assignation du control dans mes objets.

Quand je fais mon pas à pas on voit bien que mon bouton n'en a rien à f**tre de mon évènement. A la place il me refresh la page courante...

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
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
Partial Class WebUserControl
    Inherits System.Web.UI.UserControl
 
    Private tab As TableDeFrais
    Private row_collec As RowCollection
    Private cell_collec As CollumnCollection
    Private row As Row
    Private cell As Collumn
 
    Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
 
        If Not Session("tableauDeNdF") Is Nothing Then
            tab = Session("tableauDeNdF")
            panelSource.Controls.Add(tab.Render())
        End If
 
    End Sub
 
 
    Protected Sub bt_creerNdF_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles bt_creerNdF.Click
 
        If (tab Is Nothing) Then
            tab = New TableDeFrais(MonthName(Month(DateTime.Now())), Session("login"))
            tab.mesLignes.Add(creerLigneVierge(tab.mesLignes.Count + 1))
            'faire un render de tableau dans le PanelSource
            panelSource.Controls.Add(tab.Render())
 
            'garde en mémoire le tableau de note de frais en cours
            Session("tableauDeNdF") = tab
        End If
    End Sub
 
 
    Public Function creerLigneVierge(ByVal i As Integer) As Row
 
        Dim cell_collec As New CollumnCollection()
        Dim row_collec As New RowCollection()
        Dim Row As New Row()
        Dim cell As New Collumn()
 
        'création et ajout de cellule à une collection de cellules
        cell_collec.Add(New Collumn(service.creerUnControl("TextBox", "mois" & i, "Juin")))
        cell_collec.Add(New Collumn(service.creerUnControl("TextBox", "libelle" & i, "Déplacement à Marseille pour rencontrer client Carrouf")))
        cell_collec.Add(New Collumn(service.creerUnControl("DropDownList", "typeFrais" & i, "Hotel/Restaurant")))
        cell_collec.Add(New Collumn(service.creerUnControl("TextBox", "distance" & i, "700km")))
        cell_collec.Add(New Collumn(service.creerUnControl("TextBox", "tva" & i, "800€")))
        cell_collec.Add(New Collumn(service.creerUnControl("TextBox", "ht" & i, "570€")))
 
        'ajout du bouton pour créer une nouvelle ligne
        Dim btn_validerUneLigne As Button = service.creerUnControl("Button", "bt_ligneVierge" & i, "Créer une nouvelle ligne " & i)
        btn_validerUneLigne.CommandArgument = i
        AddHandler btn_validerUneLigne.Click, AddressOf validerUneLigne_Click
 
        cell_collec.Add(New Collumn(btn_validerUneLigne))
 
        'ajout de la collection de cellules à une ligne
        Row.mesColonnes = cell_collec
        Return Row
 
    End Function
 
    Public Sub validerUneLigne_Click(ByVal sender As Object, ByVal e As System.EventArgs)
        'Récupération du bouton ayant déclenché l'événement 
        Dim Btn As Button
        Btn = CType(sender, Button)
        'Traitement 
        Btn.Text = "ca marche" & Btn.CommandArgument.ToString()
 
        Dim i As Integer
        i = CType(Btn.CommandArgument, Integer) + 1
 
        tab.mesLignes.Add(creerLigneVierge(i))
 
    End Sub
EDIT : j'ai remonté les méthodes qui était à la base dans mes classes, dans le code-behind de ma page pour que ce soit plus facile à lire pour vous