[ASP.NET] Mouse over et label

[Résolu]
Signaler
Messages postés
140
Date d'inscription
mercredi 27 novembre 2002
Statut
Membre
Dernière intervention
5 septembre 2014
-
Messages postés
6814
Date d'inscription
dimanche 15 décembre 2002
Statut
Modérateur
Dernière intervention
13 octobre 2010
-
Bonjour.

Est-il possible de lancer une action avec un mouse over sur un label? J'imagine que oui, puisque nous avons déjà le tooltip qui se déclanche avec un mouse over... Il me suffirait probablement d'overrider cette méthode, mais j'avoue ne pas trop savoir par où commencer... Fait à noter que je ne veut pas réaliser cela en javascript, j'ai déjà essayé et mon événement ne se déclanche pas...

Merci

Jeff

15 réponses

Messages postés
6814
Date d'inscription
dimanche 15 décembre 2002
Statut
Modérateur
Dernière intervention
13 octobre 2010
28
oui c'est possible mais c'est assez compliqué.
Le tooltip, n'a rien a voir la dedans, ca c'est meme pas javascript c'est directement le navigateur qui s'occupe de ca.

pour capturer cet evenement va falloir reinventer la roue, et la roue dans ce cas c'est le postback.

En quelques mots, va falloir que tu codes un nouveau label, qui heritera bien sur de label, puis surchargé la méthode render, ajouter l'attribut onmouseover de ton control, dans ce onmouseover, faudra ajouter du code javascript disant que tu veux faire un postback, faudra enregistrer la fonction javascript pour faire le postback, puis rajouter un evenement, lorsque ton controle se chargera faudra regarder si la page vient de faire un postback, si oui regardé si il vient de ton controle et si oui demarrer l'evenement.

c'est tout :D

pour ce qui est du code, c'est possible que j'ai mis une source du genre sur le site regarde, sinon ben redis moi, la j'ai pas le temps, c'est pour ca que je fais cours, mais des que j'ai le temps j'explique tout ca tout bien :big)

@+

Cyril
Messages postés
6814
Date d'inscription
dimanche 15 décembre 2002
Statut
Modérateur
Dernière intervention
13 octobre 2010
28
je me suis pris une petite demi heure (plus que pour faire le code en lui meme) pour expliquer un petit peu tout ca : c'est KDO :big)

http://www.aspfr.com/code.aspx?ID=28120

s'il y a quelque chose de pas clair, n'hésites pas à me le dire, j'ai fait ca vite fair, et pour moi c'est quelque chose de basique, donc j'ai pu oublier des étapes qui paraissent importantes

Cyril
Messages postés
140
Date d'inscription
mercredi 27 novembre 2002
Statut
Membre
Dernière intervention
5 septembre 2014
1
Ok je vois... J'vais tenter ça. J'ai bien cherché autant sur ce site que sur d'autres et je n'ai rien trouvé qui réponde à ma question. Donc, si tu as une source qui pourrait me guider un peu, ça m'aiderait beaucoup :)

Merci de cette réponse constructive (j'avais peur que quelqu'un me réponde: nan impossible lol)

Jeff
Messages postés
6814
Date d'inscription
dimanche 15 décembre 2002
Statut
Modérateur
Dernière intervention
13 octobre 2010
28
ma devise est plutot impossible pas francais ;)

pour ce qui est de la source, des que j'ai une petite demi heure, je te montre ca, car c'est vrai que j'ai été rapide, et ca fait appel à des notions pas toujours evidents, mais ca permet de bien comprendre le foncionnement du postback

Cyril
Messages postés
6814
Date d'inscription
dimanche 15 décembre 2002
Statut
Modérateur
Dernière intervention
13 octobre 2010
28
Je viens de faire une petite recherche car je croyais avoir posté une source la dessus, mais apparement non, ca devait etre un post de forum : http://www.aspfr.com/forum.v2.aspx?ID=280552 l'exemple que j'ai fait la bas, et pas à la portée du premier venu, car on part d'un control complexe, mais le principe est le meme pour un control simple comme un label

JE sais pas si j'aurais le temps aujourdhui, surtout un IDE sur la main car la je suis pas chez moi :sad)

Cyril
Messages postés
140
Date d'inscription
mercredi 27 novembre 2002
Statut
Membre
Dernière intervention
5 septembre 2014
1
Dim Jeff as new person
Jeff.Status = Status.ResteColléSurSonÉcranEnAttendant

:P

Jeff
Messages postés
140
Date d'inscription
mercredi 27 novembre 2002
Statut
Membre
Dernière intervention
5 septembre 2014
1
OK... J'ai peut-être trouvé une voie moins compliquée que de refaire mon propre label...

En faisant:

Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Label1.Attributes.Add("onmouseover", "javascript:location.reload()")
End Sub

J'obtiens un refresh de la page en passant la souris sur le label en question...

Par contre, en utilisant cette méthode, est-il possible de faire comprendre au postback que c'est le label qui a généré un refresh?

Je m'explique..

If Page.IsPostBack and <c'est la faute du label> Then
Faiscequejetedis()
End If

dans <c'est de la faute au label> je pourrais surement mettre quelque chose... Peut-être avec une variable affectée à false au chargement de la page et qui passe à true lorsqu'on passe la souris sur le label... En remplaçant mon javascript:location.reload par une fonction...

Désolé si j'ai l'air décousu, je pense mieux en écrivant et j'écrie à mesure que je réfléchis lol...

Des suggestions me permettant d'avancer un peu plus?

Jeff
Messages postés
6814
Date d'inscription
dimanche 15 décembre 2002
Statut
Modérateur
Dernière intervention
13 octobre 2010
28
lol tu as la bonne solution, je viens juste de rentrer, a peine eu le temps de lancer VS que voici ce petit code pondu, c'est plus simple que ce que je croyais en fait :

<ToolboxData("<{0}:Label runat=""server""></{0}:Label>")> Public Class Label
    Inherits System.Web.UI.WebControls.Label

    Private _AutoPostBack As Boolean
     Property [AutoPostBack]() As Boolean
        Get
            Return _AutoPostBack
        End Get
        Set(ByVal Value As Boolean)
            _AutoPostBack = Value
        End Set
    End Property

    Public Event MouseOver As EventHandler

    Protected Overrides Sub Render(ByVal output As System.Web.UI.HtmlTextWriter)
        If _AutoPostBack Then
            output.AddAttribute("onmouseover", "javascript:" & Page.GetPostBackClientEvent(Me, "onMouseOver"))
        End If
        MyBase.Render(output)
    End Sub

    Private Sub Label_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Load
        If Page.IsPostBack Then            If Not Page.Request.Params("__EVENTTARGET") Is Nothing AndAlso Page.Request.Params("__EVENTTARGET") Me.UniqueID AndAlso Page.Request.Params("__EVENTARGUMENT") Is Nothing AndAlso Page.Request.Params("__EVENTARGUMENT") "onMouseOver" Then
                RaiseEvent MouseOver(Page.Request.Params("__EVENTTARGET"), (New EventArgs).Empty)
            End If
        End If
    End Sub
End Class


pour ta solution pour faire ce que tu veux ca va donner la meme solution que moi, mais ca t'evitera de faire un control, ce sera donc un poil moins joli ;) mais le resultat sera le meme

Cyril
Messages postés
140
Date d'inscription
mercredi 27 novembre 2002
Statut
Membre
Dernière intervention
5 septembre 2014
1
Je tente de comprendre ton code et je reviens si je n'y arrive pas... (autant dire à tout à l'heure lol)

Je ne suis pas encore famillier avec la création de contrôles, donc j'utiliserai ta méthode autant par sado-masochisme que par besoin d'apprendre.

Merci beaucoup de ton aide :)

Jeff
Messages postés
6814
Date d'inscription
dimanche 15 décembre 2002
Statut
Modérateur
Dernière intervention
13 octobre 2010
28
lol, ce soir si j'ai le temps je poste ca en tant que source et je detail un peu ;) pour le faire marcher, faut compiler ce code, tu recuperes la dll, et dans VS.net tu ajoutes un composant et tu met la dll la ou il te demande l'url du fichier.
et il faut aussi rajouter une reference à la dll dans l'explorateur de solution ?

c'est rapide mais ca te donne un piste :)
et puis c'est pas du masochisme, sinon je savais pas que j'aimais ca ;) mais c'est du pure bonnheur, c'est vrai que les premiers controles c'est pas evident faut etre familier avec l'environnement .net et aussi à la POO (programmation Orientée objet)

Cyril
Messages postés
140
Date d'inscription
mercredi 27 novembre 2002
Statut
Membre
Dernière intervention
5 septembre 2014
1
"ce soir si j'ai le temps je poste ca en tant que source et je detail un peu"

Ce serait gentil lol...

Pour ce qui est de compiler le code, d'ajouter une référence à la dll ça va. POO ça va aussi (pas autant que je le voudrais, mais disons que je comprends bien le principe).

Enfin... tu en as déjà fait beaucoup, je vais donc essayer de l'implanter dans mon site et je surveillerai ta source pour me corriger lol

Merci,

Jeff
Messages postés
2
Date d'inscription
vendredi 17 septembre 2004
Statut
Membre
Dernière intervention
26 janvier 2005

Bonjour,

Je poursuis ce post qui est trés sympas...



Je développe en .net.......et je découvre un peu les java script car pas de reel dynamisme si pas de java....



Mon problème est le suivant :



il n'y a pas de propriété tooltip..pour le control serveur DropdownList.....



Ma question : comment faire un info bulle, ou tooltip....pour afficher
les info des value des items d'une DropdownList..?........



Dois je faire obligatoirement un controle composite..?.....



Connaissez vous un lien..?.....ou une source qui trraine par là..?...



Merci vraiment pour vos réponses.
Messages postés
6814
Date d'inscription
dimanche 15 décembre 2002
Statut
Modérateur
Dernière intervention
13 octobre 2010
28
il n'y a pas de propriété ToolTip car en HTML pur il me semble pas
qu'il y ait la possibilité de mettre un tooltip sur un select, comme
c'est le cas pour la balise image avec l'attribut Alt.



Tu es donc obligé de t'amuser avec du Javascript ...
et te faire un controle. Il n'y a pas de source par ici, regarde sur
javascriptfr.com pour voir comment on peut faire, apres on regardera
l'implementation dans le code.



@+


<!--StartFragment -->
<hr>

Cyril - Webmaster de Hoshimi.CodeS-SourceS.fr
Messages postés
2
Date d'inscription
vendredi 17 septembre 2004
Statut
Membre
Dernière intervention
26 janvier 2005

Bonjour à tous.....

Bon, je n'arrive pas à trouver mon bonheur.......
Je pense que je vais avoir besoin d'un coup de pouce là...jesusonline....tu aurais quelques minutes pour moi..???..car j'ai strictement rien trouvé..sur javascript.fr....

Tous le monde disait que c'était impossible. Un jour un imbécile est venu, il ne savait pas, et l'a fait.
Messages postés
6814
Date d'inscription
dimanche 15 décembre 2002
Statut
Modérateur
Dernière intervention
13 octobre 2010
28
Je connais pas assez javascript pour te venir en aide, mais regarde si
deja tu peux executer du code quand la souris passe dessus ton select.



Déjà ton tooltip tu le veux ou ? lorsque tu va sur ton drop, ou alors
sur les choix disponibles ? dans le premier cas, il suffit alors de
mettre du code javascript qui affiche un mssage sur le onmouseover ou
de mettre le drop dans une div qui aura un onmouseover. si tu veux un
tooltip different pour chaque element de ton drop, la je sais pas ce
que js te propose :( ==> regarde ici :
http://fr.selfhtml.org/javascript/objets/index.htm pour plus de détails
sur les membres de js.



Bon courage

<!--StartFragment -->
<hr>

Cyril - Webmaster de Hoshimi.CodeS-SourceS.fr