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 :

Création de contrôle serveur dynamiquement et Evenements


Sujet :

ASP.NET

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Février 2006
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 7
    Par défaut Création de contrôle serveur dynamiquement et Evenements
    Bonjour à tous les galériens du développement ...

    Téchnologie : ASP.NET 2.0 , VISUAL STUDIO 2005

    G un ptit(gros) problème ...

    Je créé un tableau dynamiquement à partir des données d'une base de ....données, pour chaque ligne de ce tableau, dans la cellule , la-bas tout à droite, je créé dynamiquement un ImageButton dans le but de faire cliquer mon utilisateur(trice) chéri(e) dessus ...Jusque là pas de problèmes (...enfin si ....mais j'ai cherché ...et j'ai trouvé comment faire ...) Malgré mes recherches ...je ne trouve pas comment gérer l'événemnt sur click de mon contrôle ...les explications de l'aide ne sont pas claires du tout ....

    Y a t'il un bon samaritain pour m'expliquer la gestion des événements à coup d'exemples si il faut ...


    Merci d'avance ...


    Patrick

  2. #2
    Membre expérimenté Avatar de ccambier
    Profil pro
    Consultant ERP
    Inscrit en
    Octobre 2006
    Messages
    256
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant ERP

    Informations forums :
    Inscription : Octobre 2006
    Messages : 256
    Par défaut
    salut,
    pour gérer l'événement click sur tes boutons qui sont ajouter dynamiquement, pas la peine de créer une méthode de gestion pour chaque controle, simplement avoir une méthode qui gére le même événement et suivant un indice (par exemple celui de la ligne), pouvoir récupérer les données, et traités le bon enregistrement.

    de quelle manière tu fait le lien avec tes données et ton affichage? (databinding ou une méthode d'ajout dynamique avec page.controls.add(...) )

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Février 2006
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 7
    Par défaut événement click
    Je suis bien d'accord avec toi ...il me faut qu'une seule procédure pour gérer le click de l'ensemble de mes boutons ...mais comment faire ....Créer des controles serveur en dynamique par rapport à une base de donnée ok ..ca je sais faire ...mais ensuite pour y raccrocher des événements ça je sais plus faire ....Cela fais une semaine que je cherche ...et c'est quelque chose d'essentiel ...en attendant j'ai recours au bon vieux javascript ....mais bon j'aimerai bien rester dans l'esprit aspnet ....

    voila la boucle qui crée mes lignes de tableau ...(Un data reader c'est mieux .. je sais)

    For I = 0 To DataSet.Tables("Menus").Rows.Count - 1
    If (Int(I / NbLignes) + 1) = PageCourante Then
    NbBoutons = NbBoutons + 1
    Ligne = New HtmlTableRow
    Ligne.ID = I
    Cellule = New HtmlTableCell
    Cellule.InnerHtml = "  " & DataSet.Tables("Menus").Rows(I).Item("LIBELLE")
    Ligne.Cells.Add(Cellule)
    Cellule = New HtmlTableCell
    Cellule.InnerHtml = ("<Img src='../Images/Courant/VoirMoyen.gif' Onclick='Go(" & DataSet.Tables("Menus").Rows(I).Item("IDMENU") & ") '/>")
    Cellule.Style.Add("text-align", "center")
    Cellule.Width = 40
    Ligne.Cells.Add(Cellule)


    TabMenu03.Rows.Add(Ligne)
    End If
    Next

    Tu peux constater que j'insere une image avec un appel de fonction javascript (ce qui est loin d'être satisfaisant ...) J'aimerai mieux crée des Imagebouton à la volée ...mais je sais pas gérer l'événement onclick ..

    Merci si tu peux m'aider

  4. #4
    Membre expérimenté Avatar de ccambier
    Profil pro
    Consultant ERP
    Inscrit en
    Octobre 2006
    Messages
    256
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant ERP

    Informations forums :
    Inscription : Octobre 2006
    Messages : 256
    Par défaut
    Effectivement il y a plus pratique et plus facile pour faire ce genre de traitement...
    Pourquoi n'as-tu pas pensé au GridView (ASP.net 2.0) ou DataGrid (ASP.net 1.x)? qui contiennent tous les 2 des éléments ItemTemplate qui te permettent de faire des miracles et qui sont nettement plus facile à gérer...
    Si je reprends ton code tu peux utiliser des TableRow et TableCell au lieu des contrôles HTML (nettement moins souple et nettement moins puissant) dans lesquelles tu peux insérer des contrôles Web comme le ImageButton.

    je vais te filer un exemple de code qui fonctionne et il suffit de l'adapter (il fonctionne en asp.net 2.0 donc je ne garanti pas son fonctionnement en d'autres versions : swi pas expert en Vb mais plutot en C#)

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

    Dim imgBtn As ImageButton

    For i As Integer = 1 To 3
    imgBtn = New ImageButton()
    imgBtn.ImageUrl = "~/images/banner" & i & ".gif"
    imgBtn.ID = "img" & i
    AddHandler imgBtn.Click, New ImageClickEventHandler(AddressOf ImageButton1_Click)
    pnl1.Controls.Add(imgBtn)
    Next
    End Sub

    Protected Sub ImageButton1_Click(ByVal sender As Object, ByVal e As System.Web.UI.ImageClickEventArgs) Handles ImageButton1.Click
    Dim img As ImageButton = CType(sender, ImageButton)
    Response.Write(img.ID)
    End Sub

    si tu as besoin d'explication pour ce code n'hésite pas

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Février 2006
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 7
    Par défaut Merci
    En premier lieu merci pour ta réponse et ton code ...je vais regarder ça de prés ...je te tiens au courant

    Autant je trouve qu'il y a des choses bien dans aspnet autant je trouve que les contrôles genre GridView (ASP.net 2.0) ou DataGrid ne sont pas pratiques du tout ( ...et très moche ..en plus...)...je préfére construire moi même mes tableaux que je maîtrise de A à Z .Même si ADO.NET est pas mal ...je regrette la disparition du bon vieux recordset ...mais bon ...Il faut s'adapter ...j'y travaille ...


    Bonne journée, à bientôt ...

    Patrick JEAN

  6. #6
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Par défaut
    Citation Envoyé par MAXIPAT
    En premier lieu merci pour ta réponse et ton code ...je vais regarder ça de prés ...je te tiens au courant

    Autant je trouve qu'il y a des choses bien dans aspnet autant je trouve que les contrôles genre GridView (ASP.net 2.0) ou DataGrid ne sont pas pratiques du tout ( ...et très moche ..en plus...)...je préfére construire moi même mes tableaux que je maîtrise de A à Z .Même si ADO.NET est pas mal ...je regrette la disparition du bon vieux recordset ...mais bon ...Il faut s'adapter ...j'y travaille ...
    Pour ton soucis, de maniére générale, il ne faut pas oublier que tu dois "recabler" la gestion d'evénement à chaque rechargement de la page. En effet, les méthodes d'événement ne sont rapellées qu'une fois "recablées". C'est trivial, mais parfois on oublie .

    Sinon, pour ton regret du RecordSet, tu as le DataSet qui fait mieux et plus, et tu n'es pas obligé d'utiliser le binding, tu peux toujours binder "à la mimine" entre ton dataset et tes contrôles (c'est souvent ce que je fais, et pour un tas de raisons, liées notamment à la volonté de conserver une abstraction entre couche métier vs accées données).

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Février 2006
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 7
    Par défaut Ca marche !!!
    Merci pour l'aide !!!

    Il y a seulement une petite nuance a apporter au code pour que ça marche :
    La déclaration de la variable Objet doit se faire avec l'instruction withEvents comme ceci :

    Dim WithEvents BtImg As ImageButton

    et elle doit avoir lieu au niveau de la classe (pas comme variable locale)

    J'espère que ce bout de code va profiter à plein de monde , en tout cas moi ca m'enlève une grosse épine du pied et ça m'ouvre beaucoup d'horizons ...


    Hasta Luego Compañeros
    Patrick JEAN

  8. #8
    Membre confirmé Avatar de poissonsoluble
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    109
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Avril 2006
    Messages : 109
    Par défaut Gestion evenement de dropDownList
    Bonjour,
    Après plusieurs tentative et de recherche sur le forum ainsi que le tutoriels, je me permets de vous demander de l'aide.
    Je crée des dropDownList dynamiquement coté VB et je cherche à récupérer ce qui a été selectionné par l'utilisateur. Pour cela voici le bout de code que j'ai écrit :
    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
     
     For k As Integer = 0 To NbColonne - 1
           Dim r As New TableRow()
           Dim c As New TableCell()
           Dim cL As New TableCell()
           Dim MyLabel As New Label()
           listLabel.Add(MyLabel)
           c.Controls.Add(MyLabel)
           Dim MyListe As New DropDownList()
           MyListe.ID = "MyListe" & k.ToString()
     
           AddHandler MyListe.SelectedIndexChanged, AddressOf MyListe_SelectedIndexChanged
     
          MyListe.Width = 300
          MyListe.DataSource = GetColonnesName()
          MyListe.DataBind()
          cL.Controls.Add(MyListe)
          r.Cells.Add(c)
          r.Cells.Add(cL)
          maTableExcel.Rows.Add(r)
     
          Next
    la méthode MyListe_SelectedIndexChanged :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
     Public Sub MyListe_SelectedIndexChanged(ByVal sender As Object, ByVal e As EventArgs)
            Dim maListe As DropDownList = CType(sender, DropDownList)
            'récupérer les valeurs selectionnées
            LblMsg.Text = maListe.SelectedItem.Value()
        End Sub
    Tout compile très bien mais même si je ne récupère rien. J'ai mis un throw exception dans la méthode MyListe_SelectedIndexChanged, l'exception n'apparait jamais!!!
    Si quelqu'un arrive à voir ce qu'il ne va pas dans mon code. Je vous remercie d'avance. J'espere m'etre bien expliqué.

  9. #9
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Par défaut
    Joli déterrage de poste, mais il serait AMHA préférable de rouvrir un autre fil avec ta question.

  10. #10
    Membre confirmé Avatar de poissonsoluble
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    109
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Avril 2006
    Messages : 109

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

Discussions similaires

  1. [Article] Création de contrôles serveurs en ASP.Net
    Par Louis-Guillaume Morand dans le forum ASP.NET
    Réponses: 0
    Dernier message: 21/02/2009, 09h24
  2. Création des contrôles utilisateurs dynamiquement
    Par TheNet dans le forum ASP.NET
    Réponses: 19
    Dernier message: 30/04/2007, 21h44
  3. [Excel] création de contrôles dynamique
    Par spileo dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 14/03/2007, 22h26
  4. [VBA-E]Création de contrôle dynamique, propriété illisible
    Par spileo dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 13/03/2007, 23h45
  5. [VB.NET] - Création de contrôle dynamique
    Par DeFCrew dans le forum Windows Forms
    Réponses: 6
    Dernier message: 08/09/2006, 16h18

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