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 :

OnClick et fonction du code behind [Débutant]


Sujet :

ASP.NET

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    59
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2008
    Messages : 59
    Points : 36
    Points
    36
    Par défaut OnClick et fonction du code behind
    Bonjour,

    Je crée des boutons via un "repeater".
    Code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     <asp:Repeater ID="Repeater1" runat="server">
                <ItemTemplate>
                  <div id="Item"></div>
                    <asp:Button ID="Button1" runat="server" Text='monText'  onCommand="MonModule.MaFonction(MonParametre)" />
                  </div>
                </ItemTemplate>
            </asp:Repeater>
    J'aimrais que ma fonction corresponde à une de mes fonctions venant du code behind et plus précisément d'un module.

    J'ai tenté plusieurs choses mais toujours un message d'erreur...

    Pouvez-vous m'aider?

    Merci

  2. #2
    Expert confirmé

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2010
    Messages
    2 065
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Novembre 2010
    Messages : 2 065
    Points : 4 229
    Points
    4 229
    Par défaut
    Il faut que ça corresponde un une méthode qui respect la bonne signature dans ton code-behind, tu ne peux pas appeler une méthode d'une autre classe directement, et dans le corps de cette méthode tu pourras appeler la méthode qui se trouve dans ton module.
    http://msdn.microsoft.com/fr-fr/libr...n.command.aspx

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    59
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2008
    Messages : 59
    Points : 36
    Points
    36
    Par défaut
    Salut

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
     <asp:Repeater ID="Repeater1" runat="server">
                <ItemTemplate>
                  <div id="Item"></div>
                    <asp:Button ID="Button1" runat="server" Text='monText'  onCommand="Button_Click" CommandName='MonText' />
                  </div>
                </ItemTemplate>
            </asp:Repeater>
     
    Void Button_Click (....)
    {
     MonModule.MaFonction (e.CommandName);
    }
    J écris le code de mémoire car je ne suis pas devant mon pc...

    J avais déjà tenté cela mais ça ne fonctionnait pas...

    Quand je cliquait sur le bouton, il entrait dans Application_Error du global...

    Je vais ressayer mais l erreur est peut etre a cause du repeater

  4. #4
    Expert confirmé

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2010
    Messages
    2 065
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Novembre 2010
    Messages : 2 065
    Points : 4 229
    Points
    4 229
    Par défaut
    MaFonction est static?
    Et si ta fonction buttonclick n"est pas dans le même fichier que ton repeater rajoute protected devant. ( protected void ...)

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    59
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2008
    Messages : 59
    Points : 36
    Points
    36
    Par défaut
    Oui tout est bon.

    En fait je viens de trouver le problème:

    <%@ Page EnableEventValidation="true" %>

    Je devais le mettre sur false...

    J'espère que cela n'ouvre pas d’éventuel faille dans le programme...

  6. #6
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    59
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2008
    Messages : 59
    Points : 36
    Points
    36
    Par défaut
    Maintenant, je vais tenté de faire cela mais sur le click d'un DIV...

    Ce qui me semble plus complexe car je ne sais pas comment placer mon paramètre...

  7. #7
    Expert confirmé

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2010
    Messages
    2 065
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Novembre 2010
    Messages : 2 065
    Points : 4 229
    Points
    4 229
    Par défaut
    pourquoi sur une div ?

  8. #8
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    59
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2008
    Messages : 59
    Points : 36
    Points
    36
    Par défaut
    En fait,

    j'aimerais mettre différent élément dedans comme une image et un label et que si on clique n'importe ou sur le div, ca lance l'action.

  9. #9
    Expert confirmé

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2010
    Messages
    2 065
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Novembre 2010
    Messages : 2 065
    Points : 4 229
    Points
    4 229
    Par défaut
    Utilise un panel celui ci te génère une div et ajoute un événement onclientclick tu peux au choix cliquez sur un button caché sur la page.
    Ou tu utilises un postbackoption et tu le défini sur la propriété onclick de ton panel en code en utilisant la propriété attributes[onclick].

  10. #10
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    59
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2008
    Messages : 59
    Points : 36
    Points
    36
    Par défaut
    bonsoir,

    désolé du retard...

    J'ai pas trop suivis...

    Je mets un panel, je place mes divs dedans et j'ajoute un event click sur le panel?

    dsl je suis pas doué avec les panel lol

  11. #11
    Expert confirmé

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2010
    Messages
    2 065
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Novembre 2010
    Messages : 2 065
    Points : 4 229
    Points
    4 229
    Par défaut
    non tu mets le panel à la place de ton div et tu gère l'événement onclick dedans tu devrais avoir un code dans le genre en code-behind :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Monpanel.attributes["onclick"]=Page.ClientScript.GetPostBackEventReference(myPostBackOptions);
    Une explication sur le postbackoption: http://msdn.microsoft.com/fr-fr/libr...ckoptions.aspx

  12. #12
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    59
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2008
    Messages : 59
    Points : 36
    Points
    36
    Par défaut
    Merci.

    Entre temps j'ai trouvé une autre solution mais qui pose un petit soucis pour le moment.

    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
     
        <asp:ScriptManager ID="ScriptManager1" 
        EnablePageMethods="true"  
        EnablePartialRendering="true" runat="server"></asp:ScriptManager>
     
        <script>
            function DivClicked(Texte)
            {
                PageMethods.Command(Texte);
            }
       </script>
     
     
    Code BEHIND
    ------------
     
            [WebMethod]
            public static void Command(string CommandName)
            {
                MonModule.MaMéthde(CommandName);
            }
    Apparemment, cette partie fonctionne bien, je rentre dans la méthode du module

    Dans cette méthode, j'ai un:
    HttpContext.Current.Response.Redirect("~/Forms/MaPage.aspx",false);

    Il passe bien dans cette ligne mais ne fait rien...

  13. #13
    Expert confirmé

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2010
    Messages
    2 065
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Novembre 2010
    Messages : 2 065
    Points : 4 229
    Points
    4 229
    Par défaut
    Il semble que tu ne puisse pas faire de redirection depuis une webmethod, une solution serait de retourner l'url à ta fonction javascript pour faire cette redirection en javascript.

  14. #14
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    59
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2008
    Messages : 59
    Points : 36
    Points
    36
    Par défaut
    apparemment...

    En fait ma webmethod fait appel à une fonction du module... Le redirect est dans cette fonction mais ca ne passe pas...

  15. #15
    Expert confirmé

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2010
    Messages
    2 065
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Novembre 2010
    Messages : 2 065
    Points : 4 229
    Points
    4 229
    Par défaut
    Par contre si tu passe par un PostBackOptions ou tu click sur un bouton ça marche.
    La solution du bouton était une solution que j'utilisais souvent tu as juste à mettre un asp:button (ou linkbutton..) sur la page qui est lié à un événement tu le rend invisible pour l'utilisateur (en mettant un display:none sur le style par exemple) et en javascript tu simule un click dessus.

  16. #16
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    59
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2008
    Messages : 59
    Points : 36
    Points
    36
    Par défaut
    j'y avais penser aussi.

    Le soucis est que ces div et boutons sont créer par un repeater...
    Faut donc que je trouve un moyen de détecter l'id du bouton de cette div... pour le mettre en paramètre dans la fonction javascript

  17. #17
    Expert confirmé

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2010
    Messages
    2 065
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Novembre 2010
    Messages : 2 065
    Points : 4 229
    Points
    4 229
    Par défaut
    C'est encore plus simple dans ton cas si tu fais du jquery tu récupère le button qui est dans ta div et tu click dessus ce qui devrait ressembler à ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    <asp:Repeater ID="Repeater1" runat="server">
                <ItemTemplate>
                  <div id="Item" onclick="$(this).children('input').click()"></div>
                    <asp:Button ID="Button1" runat="server" Text='monText'  onCommand="Button_Click" CommandName='MonText' />
                  </div>
                </ItemTemplate>
            </asp:Repeater>

  18. #18
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    59
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2008
    Messages : 59
    Points : 36
    Points
    36
    Par défaut
    ok.
    Mise à part installer le package, est ce que je dois ajouter une ligne dans ma page pour activer le jquery?

  19. #19
    Expert confirmé

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2010
    Messages
    2 065
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Novembre 2010
    Messages : 2 065
    Points : 4 229
    Points
    4 229
    Par défaut
    oui juste à faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <script src="repertoire/nomfichier.js"></script>
    dans ton aspx

  20. #20
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    59
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2008
    Messages : 59
    Points : 36
    Points
    36
    Par défaut
    je viens de placer ceci

    Je l'ai placé dans le <head> de ma page maitre et j'ai également essayer en le mettant directement dans la page

    <script src="../Scripts/jquery-2.0.3.js"></script>

    mais ca ne fonctionne pas

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. [Débutant] Appeler une fonction C# code Behind depuis le aspx en Javacript
    Par SultanGeek dans le forum ASP.NET
    Réponses: 8
    Dernier message: 26/06/2015, 15h40
  2. [.net]Appeler une fonction située dans le code behind
    Par anto dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 20/05/2009, 13h05
  3. Réponses: 1
    Dernier message: 04/12/2006, 13h03
  4. Réponses: 2
    Dernier message: 21/07/2006, 13h15
  5. [C#] Execution d'une fonction en code behind
    Par elendila dans le forum ASP.NET
    Réponses: 21
    Dernier message: 22/08/2005, 15h06

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