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 :

[C#/JS] Comment appeler un évènement code behind en javascript avec framework 1.1


Sujet :

ASP.NET

  1. #1
    Nouveau membre du Club
    Inscrit en
    Juin 2008
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 7
    Par défaut [C#/JS] Comment appeler un évènement code behind en javascript avec framework 1.1
    Bonjour,

    Voilà mon pb, je voudrai déclencher dans mes méthodes javascript des évènements contenus dans le code behind (C#/VB.NET).
    Un ancien post parle de cela cependant je dois préciser que je suis sur le Framework 1.1 et que Ajax n'existe pas dans cet environnement, donc est ce que c'est possible quand même et si oui comment fait-on ?

    Merci par avance parce que je rame dur là.

    Rems

  2. #2
    Membre chevronné
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    581
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2004
    Messages : 581
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     
    <% NomControle.Event %>
    C'est pas comme ca ? Dans ton code javascript.

    Fix

  3. #3
    Nouveau membre du Club
    Inscrit en
    Juin 2008
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 7
    Par défaut
    Citation Envoyé par fix105 Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     
    <% NomControle.Event %>
    C'est pas comme ca ? Dans ton code javascript.

    Fix
    Dans le javascript tu mets du code comme ça ? je ne comprend pas ce que tu veux me dire là ! les balises <% %> ne sont pas reconnues en javascript et ça me parait un peu facile pour déclencher un évènement côté serveur VB.NET (code behind) non asp.net via JS. Je ne suis pas contre une petite explication là.

    Merci.

  4. #4
    Membre extrêmement actif
    Profil pro
    Inscrit en
    Août 2005
    Messages
    1 240
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 1 240
    Par défaut
    pourquoi ce ne serait pas possible de faire de l'ajax avec le framework 1.1. ajax c'est du javascript donc tu peux. après peut etre que asp.net ajax ne fonctionne pas en 1.1. mais ca c'est un autre problème.
    je pense qu'il faut que tu le fasses à la mano. ou mate sur le net des framework en 1.1.
    mais pourquoi tu veux declencher des evenements serveurs depuis ton javascript si tu penses qu'ajax ne fonctionne pas en 1.1?

  5. #5
    Nouveau membre du Club
    Inscrit en
    Juin 2008
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 7
    Par défaut
    Citation Envoyé par rattlehead Voir le message
    pourquoi ce ne serait pas possible de faire de l'ajax avec le framework 1.1. ajax c'est du javascript donc tu peux. après peut etre que asp.net ajax ne fonctionne pas en 1.1. mais ca c'est un autre problème.
    je pense qu'il faut que tu le fasses à la mano. ou mate sur le net des framework en 1.1.
    mais pourquoi tu veux declencher des evenements serveurs depuis ton javascript si tu penses qu'ajax ne fonctionne pas en 1.1?
    Non tu as raison, je vais m'expliquer, dans mon projet je ne dois pas importer de nouvelles dll et comme l'ajax n'est pas intégré directement dans VS 2003 je dois me le frapper à la mano donc avec le XHR je crois. Maintenant je ne vois pas comment peut-on faire pour déclencher un event d'un objet instancié dans le code behind qui existe dans le code comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Grille_Click(byref sender, byval e as System.EventArgs)
    et que je veux donc appeler dans mon javascript un peu comme ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    function CallEvent()
    {
      // je récupère l'objet de ma page
     // je déclenche son évènement Click (par exemple) en asynchrone
    }
    Voilà un peu ce que je veux faire.

    Est ce que maintenant c'est possible tout ça, là je ne sais pas. Est ce que tu as une solution ?

    Merci.

  6. #6
    Membre extrêmement actif
    Profil pro
    Inscrit en
    Août 2005
    Messages
    1 240
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 1 240
    Par défaut
    mate du coté de xmlhttprequest. ou bien une bonne librairie ajax pour t'inspirer du truc.
    sinon tu fais un postback. bon tu as un aller retour serveur mais c'est plus simple.

  7. #7
    Nouveau membre du Club
    Inscrit en
    Juin 2008
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 7
    Par défaut
    Citation Envoyé par rattlehead Voir le message
    mate du coté de xmlhttprequest. ou bien une bonne librairie ajax pour t'inspirer du truc.
    sinon tu fais un postback. bon tu as un aller retour serveur mais c'est plus simple.
    Alors non je ne veux pas de postback, mais j'ai trouvé une solution donc je vais la proposer pour les prochaines fois si quelqu'un cherche la même chose.

    Donc je veux dans le javascript déclencher un évènement côté vb.net donc dans mon javascript je déclare un objet XHR :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    // on créé l'objet XHR
    var xhr_object = null;
     
    if(window.XMLHttpRequest) // Firefox
       xhr_object = new XMLHttpRequest();
    else if(window.ActiveXObject) // Internet Explorer
       xhr_object = new ActiveXObject("Microsoft.XMLHTTP");
    else { // XMLHttpRequest non supporté par le navigateur
       alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest...");
    return; }
    puis dans un fonction javascript qui est mappé à l'évènement mousedown de ma grid j'envoie une clé par la méthode post à la page voulue :

    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
    22
     
    // ma page
    	var page = "WebForm1.aspx";
    // envoie par la méthode post
    	 xhr_object.open("POST", page, false);
     
       xhr_object.onreadystatechange = function() {
     
          if(xhr_object.readyState == 4) // fin du traitement
     
    // je mets dans ma textbox un message de réussite
          textbox.value = textbox.value + " event mousedown déclenché";
     
             //eval(xhr_object.responseText);
       }
     
     
       xhr_object.setRequestHeader("Content-type","application/x-www-form-urlencoded");
    // ici j'envoie la clé
       var data = "mousedown=1";
        xhr_object.send(data);
    //
    j'ai volontairement fait du synchrone pour avoir un enchainement d'évènement cohérent (mousedown avant click et avant mouseup,...).

    Donc par la magie du XmlHttpRequest je récupère dans ma page au niveau du page load les clés envoyés par post à la page :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
     
    ...
    ' si j'ai des clés envoyées par post
    If Page.Request.Form.Keys.Count > 0 Then
    ' j'appelle ma méthode interne avec la clé postée
                SendEvent(Page.Request.Form.AllKeys)
            End If
    ...
     
    End sub
    Ensuite je fais le traitement dans ma méthode SendEvent

    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
     
    Private Sub SendEvent(ByVal keys As String())
    ' je regarde la nature de la clé
            Select Case keys(0)
                Case "mousedown"
    ' si mousedown en clé dans la post alors je déclenche mon évènement ' mousedown interne
                    RaiseEvent _MouseDown(Me, Nothing)
                Case "mouseup"
    ' si mouseup en clé dans la post alors je déclenche mon évènement mouseup interne
                    RaiseEvent _MouseUp(Me, Nothing)
                Case "click"
    ' si click en clé dans la post alors je déclenche mon évènement click interne
                    RaiseEvent _Click(Me, Nothing)
                Case Else
                    Return
            End Select
        End Sub
    Et voilà le tour est joué, lorsque je clique sur ma grid, je n'ai pas de postback et en plus mes évènements internes sont lancés.

    Voilà merci encore.

    A bientôt

    Rems

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

Discussions similaires

  1. Réponses: 20
    Dernier message: 16/10/2009, 16h51
  2. [DynamicResource] Comment l'affecter côté code-behind C# ?
    Par despeludo dans le forum Windows Presentation Foundation
    Réponses: 1
    Dernier message: 17/09/2008, 13h41
  3. Réponses: 5
    Dernier message: 14/12/2007, 15h51
  4. Réponses: 1
    Dernier message: 24/05/2006, 15h08

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