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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  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 : 64
    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).

+ 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