Bonjour a tous,
j'ai crée des boutons dynamiquements, et ajouter des evenements a ceux ci, ais lorsque que je clique dessus il n'entre pas dans ma procedure .click....
Bonjour a tous,
j'ai crée des boutons dynamiquements, et ajouter des evenements a ceux ci, ais lorsque que je clique dessus il n'entre pas dans ma procedure .click....
Bonjour ! C'est embêtant
On peut avoir le code qui crée les boutons et qui ajoute l'évènement du click?
►Ne pas oublier le
►
j'ai d'abord ca
puis je les redeclare dans ma page-prerender
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 Do While j <= 28 Dim but As New Button but.Width = 100 If InStr(Dispo.ToString.Substring(i, 6), "1") Then Table1.Rows(j).Cells(1).Controls.Add(but) but.BackColor = Drawing.Color.Orange ElseIf InStr(Dispo.ToString.Substring(i, 6), "0") Then Table1.Rows(j).Cells(1).Controls.Add(but) but.BackColor = Drawing.Color.Green Else Table1.Rows(j).Cells(1).Controls.Add(but) but.BackColor = Drawing.Color.Red End If i = i + 5 j = j + 1 Loop
merci de m'aider, je suis un peu paumé la, d'habitude il fonctionne vbien, j'en ai deja fait mais la impossible de savoir pourquoi...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 For Each r As TableRow In Table1.Rows Dim but As New Button but.Width = 100 r.Cells(1).Controls.Add(but) AddHandler but.Click, AddressOf but_Click Next
Heu ouais bizarre... Ta procédure de clique se présente bien de cette forme la? :
Code vb : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 Private Sub but_Click (sender As Object, evArgs As EventArgs) End Sub
►Ne pas oublier le
►
j'ai tout renommer au cas ou il n'aime pas "but_click" mais rien 'a changer, j'ai rajouter des haddhandler dans ma 1ere création de partout mais rien n'y fait
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 Protected Sub butclick(ByVal sender As Object, ByVal e As System.EventArgs) End Sub
C'est des boutons html crée? Je n'ai pas fais d'ASP .Net mais du VB .Net .
En VB .Net je pense que cela aurait du marcher... Mais si tu fais des boutons html je ne pense pas que ce soit exactement la même syntaxe.
►Ne pas oublier le
►
non pas html
ce sont des boutons crée et ajouter dynamiquement dans une table, j'ai 7 Table, avec 28 lignes, donc 28 boutons...
est ce que ca pourrait venir de l'id que je n'initialise pas ?
Une idée : je croi, si j'ai bien compris ton code, que tu charge les buttons avant d'associer à chacune d'elle le gestionnaire d'evennement(AddHandler) puisque tu fai d'abord
donc tu charge le controle puis tu ajoute le gestionnaire d'evennemnt ce qui n'a aucun effet... essay de faire le contraire : ajoute le gestionnaire d'evennement à la button avant de l'inserer dans une cellule.
Code : Sélectionner tout - Visualiser dans une fenêtre à part Table1.Rows(j).Cells(1).Controls.Add(but)
j'ai changer , ca ne marche toujours pas mais le code est plus clair...peut etre que ca vous aider a m'aider a essayer de comprendre pkoi ca ne marche pas
ce code est dans le pre render de ma page...
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 Do While j <= 28 Dim but1 As Button = New Button but1.Width = 100 but1.ID = String.Format("but1{0}", j) AddHandler but1.Click, AddressOf butclick If InStr(Dispo.ToString.Substring(i, 6), "1") Then Table1.Rows(j).Cells(1).Controls.Add(but1) but1.BackColor = Drawing.Color.Orange ElseIf InStr(Dispo.ToString.Substring(i, 6), "0") Then Table1.Rows(j).Cells(1).Controls.Add(but1) but1.BackColor = Drawing.Color.Green Else Table1.Rows(j).Cells(1).Controls.Add(but1) but1.BackColor = Drawing.Color.Red End If i = i + 5 j = j + 1 Loop
sachant que je crée 6 autres autres tables comme celle ci
c'est bon j'ai trouver, c'est parce que je créais mes boutons dans le pre render, et donc ne gereais pas mes evenements
Le problème vient du fait que "PreRender" c'est beaucoup trop tard pour placer les abonnements aux événements.
Lors du PostBack, les méthodes RaiseChangedEvents et RaisePostBackEvent sont appelées avant le PreRender, donc ta page ne sait pas encore qu'il y a des abonnements...
Bref, place ta procédure de création de contrôles plus tôt; idéalement dans PreInit, au plus tard dans OnLoad.
In my experience, any attempt to make any system idiot proof will only challenge God to make a better idiot.
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager