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 :

Ajout événement clic sur user control ascx


Sujet :

ASP.NET

  1. #1
    Membre régulier Avatar de Nixar
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    302
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 302
    Points : 85
    Points
    85
    Par défaut Ajout événement clic sur user control ascx
    Bonsoir à tous,
    Je dispose d'un contrôle utilisateur que j'ai créé et qui est composé de plusieurs panel, de labels et d'une image :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <%@ Control Language="C#" AutoEventWireup="true" CodeFile="LienVisionneusePagePhoto.ascx.cs" Inherits="LienVisionneusePagePhoto" %>
    <asp:Panel ID="PanelLienVisionneusePagePhotoConteneur" runat="server" CssClass="PresentationVisionneusePagePhoto">
        <asp:Panel ID="PanelVignette" runat="server" CssClass="ImgPresentationVisionneusePagePhoto">
            <asp:HyperLink ID="LienVersGalerie" runat="server" Height="100px" Target="_blank"
                Width="100px" style="background-position: center center;">[LienVersGalerie]</asp:HyperLink></asp:Panel>
        <asp:Panel ID="PanelTitre" runat="server" CssClass="TitrePresentationVisionneusePagePhoto">
            <asp:Label ID="LabelTitre" runat="server"></asp:Label></asp:Panel>
        <asp:Panel ID="PanelCommentaires" runat="server" CssClass="CommentairesPresentationVisionneusePagePhoto">
            <asp:Label ID="LabelCommentaires" runat="server"></asp:Label></asp:Panel>
        <asp:Panel ID="PanelNbPhotos" runat="server" CssClass="NbPhotosPresentationVisionneusePagePhoto">
            <asp:Label ID="LabelNbPhotos" runat="server"></asp:Label></asp:Panel>
    </asp:Panel>
    Je voudrais ajouter sur tout le contrôle un événement clic, afin de pouvoir ouvrir sur ce clic un autre navigateur avec un chemin spécifique (en fait un comportement de lien).

    Je ne vois pas du tout comment faire... Des idées ?

    Merci d'avance.
    Nixar.

  2. #2
    Membre régulier Avatar de Nixar
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    302
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 302
    Points : 85
    Points
    85
    Par défaut Remontée de post...
    Bonjour à tous,
    Je me permets de réitérer ma demande... Pour rappel, je cherche à ajouter à ajouter un événement click à un user control ascx (côté client ou serveur) qui me permette tout simplement de rediriger l'utilisateur qui a cliqué vers une page différente pour chaque user control.

    Je ne vois pas comment faire, le panel n'ayant pas d'événement click, ou de propriété "OnClientClick".

    Merci de vos réponses !

    Nixar

  3. #3
    Membre expérimenté Avatar de Arthis
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    1 265
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : Italie

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 265
    Points : 1 352
    Points
    1 352
    Par défaut
    et tu as essayé de mettre une balise hyperlien <A href="">....</A> qui engloberait le tout ?

  4. #4
    Membre régulier Avatar de Nixar
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    302
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 302
    Points : 85
    Points
    85
    Par défaut
    Bonjour et merci de ta réponse,
    J'ai essayé ton idée (avec un lien <a> classique et avec un asp:Hyperlink) et dans les 2 cas ca ne semble pas fonctionné, voici ce que ça me fait :

    Voici le code d'abord :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <%@ Control Language="C#" AutoEventWireup="true" CodeFile="Publication.ascx.cs" Inherits="LienVisio" %>
    <asp:HyperLink runat="server" id="lien" NavigateUrl="~/3d.aspx">
        <asp:Panel ID="Panel3" runat="server" Height="110px"
            Width="350px" style="overflow: hidden; margin-top: 5px; margin-bottom: 5px;" CssClass="PresentationGalerie">
            <asp:HyperLink CssClass="ImgPresentationGalerie" ID="LienVersGalerie" runat="server" Style="clear: none;float: left; margin-top: 5px; border-left-color: silver; border-bottom-color: silver; margin-left: 5px; border-top-style: solid; border-top-color: silver; border-right-style: solid; border-left-style: solid; border-right-color: silver; border-bottom-style: solid;" Width="100px" ImageAlign="AbsMiddle" Height="100px">[Img]</asp:HyperLink> 
            <asp:Panel ID="Panel4" runat="server" Height="105px" Style="clear: none; left: 0px; top: 4px; overflow: hidden;" Width="241px">
                <asp:Label ID="Lbl_Titre" runat="server" Height="15px" Width="240px" CssClass="TitrePresentationGalerie"></asp:Label>
                <asp:Label ID="commentaires" runat="server" style="overflow: hidden" Height="80px" Width="240px" CssClass="CommentairesPresentationGalerie"></asp:Label></asp:Panel>
        </asp:Panel>
    </asp:HyperLink>
    Et voici ce qui est généré. Le lien est bien présent mais n'englobe pas mon div... ce qui me semble normal non? Mais comment faire pour obtenir ce comportement de contrôle cliquable? :



    Merci de vos réponses !!

  5. #5
    Membre confirmé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2004
    Messages
    417
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2004
    Messages : 417
    Points : 581
    Points
    581
    Par défaut
    J'avais pas vu ce post précedment tu as bien fais de le remonter.
    Je te propose deux solutions:
    1ere solution(un peu plus complexe mais avec un Postback)
    en premier lieu fait hérité ton Usercontrol de l'interface IPostBackEventHandler. (evidement tu implement les methodes qu'il faut)
    Grace a cela quand un postback sera lui levé ca lui sera passé par son intermediaire.

    ensuite dans le onload de ton UC tu fais ceci pour dire a ton panel de levé un Postback:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    TonPanel.Attributes.Add("onclick", this.Page.ClientScript.GetPostBackEventReference(this, "onclick"));
    Le dernier parametre sert dans RaisePostBackEvent c'est le 'eventArgument'.

    Donc voila deja la tu recup un click en postback dans la methode "RaisePostBackEvent" implementer par l'interface .
    Apres tu peux mettre une propriété a ton Uc qui précise la page ou tu veux rediriger et faire un redirect.
    Ou tu peux aussi declarer
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    public event EventHandler OnClick;
    Et dans RaisePostBackEvent tu fais:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    if (eventArgument == "onclick" && OnClick != null)
                    OnClick(this, EventArgs.Empty);
    Quite permettra de recuperer l'evenment click dans la page qui contien ton UserControl.
    (evidment dans la page ou ton UC est present :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    TonUC.OnClick += new EventHandler(TonUC_OnClick);
    )

    2eme solution(plus simple mais sans Postback - non testé mais devrais marcher dans le principe)
    La deuxieme solution que je te propose est sensiblement dans le meme gout mais sans postback.

    Tu déclares Une propiété ou tu precise le chemin de la page ou tu veux redirigérer et tu fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    TonPanel.Attributes.Add("onclick", "javascript:document.location.href="+PathToNewPage);
    Voila si tu as des questions n'hesite pas.

    Il existe peut etre plus simple mais bon c'est pas marrant sinon lol
    L'Homme est doté de 2 yeux et de 2 oreilles pour voir et entendre deux fois plus qu'il ne parle

    Je ne réponds pas au questions par mp. Merci

  6. #6
    Membre régulier Avatar de Nixar
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    302
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 302
    Points : 85
    Points
    85
    Par défaut
    Merci encore une fois gyzmau... Tes 2 réponses me conviennent parfaitement. J'ai implémenté la plus simple (et tout fonctionne) étant donné que je n'ai pas besoin d'un postback. Je garde cependant précieusement la première qui est plus pro et offre plus de possibilités.

    J'ai encore une question qui me turlupine mais pour laquelle j'ai besoin d'un bon moment de rédaction... J'espère pouvoir la poster dans la journée.

    Merci encore à toi !

    Cordialement,

    Nixar

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

Discussions similaires

  1. Problème session et user controle .ascx
    Par LhIaScZkTer dans le forum ASP.NET
    Réponses: 5
    Dernier message: 30/01/2008, 15h53
  2. [ASP.NET][C#]Heritage sur User Control
    Par User.Anonymous dans le forum ASP.NET
    Réponses: 3
    Dernier message: 13/09/2007, 11h03
  3. Modifier comportement de clic sur un controle
    Par dany007 dans le forum IHM
    Réponses: 4
    Dernier message: 01/03/2007, 18h43
  4. ajouter une variable sur un control
    Par gijy dans le forum MFC
    Réponses: 15
    Dernier message: 21/03/2006, 18h18
  5. Réponses: 6
    Dernier message: 18/04/2005, 21h12

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