Comment créer un nouvel évement?

Résolu
kroutov Messages postés 4 Date d'inscription mardi 20 décembre 2011 Statut Membre Dernière intervention 20 décembre 2011 - 20 déc. 2011 à 15:02
kroutov Messages postés 4 Date d'inscription mardi 20 décembre 2011 Statut Membre Dernière intervention 20 décembre 2011 - 20 déc. 2011 à 17:41
Bonjour,

Voici mon problème: Je crée un nombre variable de graphique grâce au contrôle "chart".

Je souhaite effectué une action lambda sur le click d'un des graphiques.
Je ne sais pas si c'est possible, je cherche depuis 3 jours déjà sans succès. J'ai essayé le fameux: "addhandler" mais ça ne marche pas.
Si vous avez des idées, je suis preneur.

Ci-après mes sources.
Merci d'avance.

For i = 1 To collec_qualites.Count
            series_data = New Series
            series_moyenne = New Series
            chart_organigramme = New Chart

            chart_organigramme.ChartAreas.Add("chartarea_ZoneOrganigramme")
            str_local = collec_qualites(i)("local")
            For x = 1 To collec_qualites(str_local)("date").count
                date_affichage = collec_qualites(str_local)("date")(x)
                dbl_note = collec_qualites(str_local)("note")(x)
                dbl_notemoyenne = collec_qualites(str_local)("noteObj")(x)
                If dbl_notemoyenne = 100 Then
                    dbl_notemoyenne = 99.989999999999995
                End If
                If dbl_note = 100 Then
                    dbl_note = 99.989999999999995
                End If
                series_data.Points.AddXY(date_affichage.ToString("d"), dbl_note)
                series_moyenne.Points.AddXY(date_affichage.ToString("d"), dbl_notemoyenne)
            Next x
            series_data.Name = str_local
            series_data.ChartArea = "chartarea_ZoneOrganigramme"
            chart_organigramme.Series.Add(series_data)
            chart_organigramme.Series.Add(series_moyenne)
            chart_organigramme.Series(1).ChartType = SeriesChartType.Line
            chart_organigramme.Series(1).Color = Drawing.Color.Red
            chart_organigramme.Series(1).BorderWidth = 5
            chart_organigramme.Series(0).IsVisibleInLegend = False
            chart_organigramme.Visible = True
            chart_organigramme.Titles.Add("titre")
            chart_organigramme.Titles(0).Text = str_local

            MonPanel.Controls.Add(chart_organigramme)
            AddHandler chart_organigramme.Click, AddressOf chart_organigramme_Click '<-- ça ne marche pas
            series_data = Nothing
        Next i

5 réponses

kroutov Messages postés 4 Date d'inscription mardi 20 décembre 2011 Statut Membre Dernière intervention 20 décembre 2011
20 déc. 2011 à 17:16
Bon, j'ai finis par trouver après maintes recherches.

For i = 1 To collec_qualites.Count
            series_data = New Series
            series_moyenne = New Series
            chart_organigramme = New Chart

            chart_organigramme.ChartAreas.Add("chartarea_ZoneOrganigramme")
            str_local = collec_qualites(i)("local")
            For x = 1 To collec_qualites(str_local)("date").count
                date_affichage = collec_qualites(str_local)("date")(x)
                dbl_note = collec_qualites(str_local)("note")(x)
                dbl_notemoyenne = collec_qualites(str_local)("noteObj")(x)
                If dbl_notemoyenne = 100 Then
                    dbl_notemoyenne = 99.989999999999995
                End If
                If dbl_note = 100 Then
                    dbl_note = 99.989999999999995
                End If
                series_data.Points.AddXY(date_affichage.ToString("d"), dbl_note)
                series_moyenne.Points.AddXY(date_affichage.ToString("d"), dbl_notemoyenne)
            Next x
            series_data.Name = str_local
            series_data.ChartArea = "chartarea_ZoneOrganigramme"
            chart_organigramme.ID = i.ToString
            chart_organigramme.Series.Add(series_data)
            chart_organigramme.Series.Add(series_moyenne)
            chart_organigramme.Series(1).ChartType = SeriesChartType.Line
            chart_organigramme.Series(1).Color = Drawing.Color.Red
            chart_organigramme.Series(1).BorderWidth = 5
            chart_organigramme.Series(0).IsVisibleInLegend = False
            chart_organigramme.Visible = True
            chart_organigramme.Titles.Add("titre")
            chart_organigramme.Titles(0).Text = str_local
            chart_organigramme.Attributes.Add("onclick", "__doPostBack('chartarea_ZoneOrganigramme'," + i + ");")

            MonPanel.Controls.Add(chart_organigramme)
            series_data = Nothing
        Next i


Et je récupère le tout dans le Page Load.

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load

        If (Request.Form("__EVENTTARGET") = "chartarea_ZoneOrganigramme") Then
            Dim chartid = Request.Form("__EVENTARGUMENT")

        End If


C'est du bidouillage, mais ça marche.
3
Utilisateur anonyme
20 déc. 2011 à 16:24
Salut,

Ajoute la sub:

Private Sub chart_organigramme_Click(ByVal sender As Object, ByVal e As System.EventArgs)

End Sub


Et tu verras ça va mieux fonctionner...
Cordialement



CF2i - Guadeloupe
Ingénierie Informatique
0
kroutov Messages postés 4 Date d'inscription mardi 20 décembre 2011 Statut Membre Dernière intervention 20 décembre 2011
20 déc. 2011 à 16:29
Je viens de tester ta solution, ça ne marche pas.

Pour information, j'avais cette sub au paravent.

Sub chart_organigramme_Click(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.ImageMapEventArgs)
    End Sub


A savoir qu'elle ne marchait pas non plus.
0
Utilisateur anonyme
20 déc. 2011 à 17:18
Re:
Excuse je viens de relire ton code;
C'est normal puisque tu veux créer le même control plusieurs fois dans ta boucle for next.

Il te faudrait un tableau de controls dans ce cas, un exemple sur un textbox:

 Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
        Dim Texte(0) As TextBox
        For i As Integer = 0 To 5
            ReDim Preserve Texte(Texte.GetUpperBound(0) + 1)
            Texte(i) = New TextBox
            Controls.Add(Texte(i))
            If i > 0 Then Texte(i).Top = Texte(i - 1).Top + Texte(i).Height
            AddHandler Texte(i).Click, AddressOf Texte_Click
        Next
    End Sub

    Private Sub Texte_Click()
    End Sub


CF2i - Guadeloupe
Ingénierie Informatique
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
kroutov Messages postés 4 Date d'inscription mardi 20 décembre 2011 Statut Membre Dernière intervention 20 décembre 2011
20 déc. 2011 à 17:41
Je pense que cela doit marcher également, mais ça m'obligerait à modifier 40% de mon algo par la suite. C'est assez dérangeant. Merci quand même de l'aide rapide et efficace.
0
Rejoignez-nous