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 :

Evènement "Double Clic" sur ListBox introuvable


Sujet :

ASP.NET

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    130
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 130
    Par défaut Evènement "Double Clic" sur ListBox introuvable
    Bonjours à tous!!
    Je cherche depuis quelques jours déjà une solution à ce problème qui me parait simple :
    Lier une fonction sur un double clic dans une listbox...
    J'ai beau fouiller dans tous les forums je n'ai rien trouvé ou je n'arrive pas à comprendre comment ajouter un évènement.
    J'ai bien réussi dans le code ASP à ajouter:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    onDoubleClick = "nomdefonction"
    Mais il ne retrouve pas ma fonction (Développée en VB... sous "nomdefonction" et j'ai essayé public/private/protected....
    Enfin le "handles Listbox1.onDoubleClic" ne marche pas non plus (directement dans le code VB), il ne propose aucun évènement correspondant...

    Par contre j'ai bien un qui existe...
    Mais il ne fonctionne pas... Je l'ai implémenter ainsi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Public Sub lst_Files_DoubleClick(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.DoubleClick
            Call OpenFileDL()
    End Sub
    Et rien ne se passe...

    Bref j'aimerais savoir si on peut ajouter un évènement doubleclick à une ListBox ou sinon comment lier l'évènement de la page doubleclick à ma listbox...

    Merci à tous

  2. #2
    Rédacteur
    Avatar de lutecefalco
    Profil pro
    zadzdzddzdzd
    Inscrit en
    Juillet 2005
    Messages
    5 052
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : zadzdzddzdzd

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 052
    Par défaut
    Ca m'étonnerait fort que OnDoubleClick existe sur un web control

  3. #3
    Membre chevronné
    Inscrit en
    Octobre 2005
    Messages
    400
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 400
    Par défaut
    Moi aussi. La seule solution je pense est de le simuler en javascript.

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    130
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 130
    Par défaut
    Alors dans ce cas, comment faire en sorte que le Javascript appelle une fonction sur ma page .vb car il j'aimerais pouvoir modifier mes éléments...
    Et j'ai vu quelques exemples où ils utilisaient un évènement double click, mais ils parler d'ajouter l'évènement avec une fonction addevents...
    Par contre je n'ai absolument pas compris le comment et surtout, je n'en ai trouvé aucun exemple...
    Merci bien à vous en tout cas de vous pencher sur ce problème...

  5. #5
    Membre chevronné
    Inscrit en
    Octobre 2005
    Messages
    400
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 400
    Par défaut
    Je sais pas comment tu vois le truc, mais j'aurai fait un contrôle qui hérite de DropDownList, qui génère un code Javascript pour capturer le double click. Ce javascript effectue un __doPostBack(arg1, arg2), en scrutant les paramètre http (Request.Form[EVENT_TARGET], Request.Form([EVENT_ARGUMENT]) qui correspondent à arg1 et arg2. Si ils correspondents au valeur attendu pour l'évenement double click je traite l'événement.

    C'est un poil fastidieux

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    130
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 130
    Par défaut
    Personnellement je me serais contenté d'un "SelectedIndexChanged" mais mes collègues ont peur de cliquer dessus par maladresse!!

    Je gère très moyennement le Javascript... (à peu près complètement novice... mais je ne demande qu'à apprendre...)
    Les EVENT_TARGET et EVENT_ARGUMENT, je dois les envoyer moi ou ils sont générés automatiquement?

    Et on récupère la source de l'évènement?

    L'appel Javascript se fait dans mon élément liste? (avec ondoubleclick?) et la fonction qui correspond, on l'écrit où? Dans la page ASPX en script en en-tête?

  7. #7
    Membre chevronné
    Inscrit en
    Octobre 2005
    Messages
    400
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 400
    Par défaut
    Je fais un test et je tien au courant

  8. #8
    Membre chevronné
    Inscrit en
    Octobre 2005
    Messages
    400
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 400
    Par défaut
    Finalement, pas besoin d'aller jusqu'au bout du processus.

    Côté aspx, on annule les événements clique et change (clique est peut-être facultatif, à tester)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
              <asp:ListBox ID="ListBox1" runat="server" AutoPostBack="true" onchange="return false;" onClick="return false;" > 
                <asp:ListItem Text="AA"></asp:ListItem>
                <asp:ListItem Text="BB"></asp:ListItem>
                <asp:ListItem Text="CC"></asp:ListItem>
            </asp:ListBox>
    Et côte codebehind, sur double clique, on fait un postback comme si c'était la liste qui lançait l'événement.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     this.ListBox1.Attributes["onDblClick"] = string.Format(@"__doPostBack('{0}','')", ListBox1.UniqueID);
    Si tu regarde le code html générée :
    L'action on change de base est annulée avec le return false, et est lancé pour le doubleclick (copie du code du change pour le double clique), regarde le code html ça vaut le détour, et surtout ça apprend pas mal de chose

  9. #9
    Membre chevronné
    Inscrit en
    Octobre 2005
    Messages
    400
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 400
    Par défaut
    dsl, j'ai fait le test en C#

  10. #10
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    130
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 130
    Par défaut
    Merci beaucoup pour ton code, C# et VB c'est du pareil au même !!! Juste une manière différente d'écrire les mêmes fonctions...
    J'adapte et teste ton code et reviens vers toi!!

  11. #11
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    130
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 130
    Par défaut
    Vraiment excellent ton code, et simple en plus!!
    Je te remercie encore...
    J'ai mis dans mon code asp :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    <asp:ListBox ID="lst_Files" runat="server" Width="134px" Height="72px" 
                        DataTextField="name" DataValueField="id" 
                        AppendDataBoundItems="True" CausesValidation="True" AutoPostBack="true" onchange="return false;" onClick="return false;">
                    </asp:ListBox>
    Suivi dans ma fonction Page_Load de:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
     Me.lst_Files.Attributes("onDblClick") = String.Format("__doPostBack('{0}','')", lst_Files.UniqueID)
            Me.lst_Agent.Attributes("onDblClick") = String.Format("__doPostBack('{0}','')", lst_Agent.UniqueID)
            Me.lst_Customer.Attributes("onDblClick") = String.Format("__doPostBack('{0}','')", lst_Customer.UniqueID)
    Car j'ai en fait 3 listes dans ma page...
    Enfin pour chaque liste j'ai défini l'événement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
     Public Sub lst_Files_DoubleClick(ByVal sender As Object, ByVal e As System.EventArgs) Handles lst_Files.SelectedIndexChanged
            Call OpenFileDL()
        End Sub
    Je n'aurais jamais cru y arriver aussi simplement, mais en tout cas, je te remercie oyigit car je ne pense pas que j'y serais arriver sans toi!!!

  12. #12
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    130
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 130
    Par défaut
    Je savais que c'était trop beau pour être vrai!!
    Tous mes autres événements sont annulés....
    Je ne peux qu'effectuer qu'un seul double clic, ensuite tous mes autres évènements ne font qu'effectuer la fonction définie par le 1er double clic effectué...
    Une idée pour que tous mes évènements fonctionnent?
    Merci

  13. #13
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    130
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 130
    Par défaut
    La solution à ce dernier problème :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
            If String.Compare(Request.Form("__EVENTTARGET").ToString, lst_Files.UniqueID.ToString) = 0 Then
                Call OpenFileDL()
            End If
    Bref je regarde qui fait un PostBack...
    Bref sur une autre page où j'ai une GridView avec des évènements particuliers...
    Je misère!!
    En tout cas encore merci à tous, je mets à "Résolu" car le problème initial l'est!!

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

Discussions similaires

  1. [Débutant] Empécher clic droit et double clic gauche sur un controle
    Par ekydeta dans le forum VB.NET
    Réponses: 13
    Dernier message: 07/05/2014, 14h49
  2. Listboxitem, clic,double clic, binding sur methode.
    Par Jazz_ dans le forum Windows Presentation Foundation
    Réponses: 4
    Dernier message: 12/12/2011, 12h25
  3. Réponses: 17
    Dernier message: 05/09/2007, 16h24
  4. Réponses: 3
    Dernier message: 25/08/2006, 14h01

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