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 :

[VS 2008 - Javascript] appel d'une fonction a partir du code behind


Sujet :

ASP.NET

  1. #21
    Membre expérimenté Avatar de slim
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2002
    Messages
    938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2002
    Messages : 938
    Points : 1 337
    Points
    1 337
    Par défaut
    Maintenant j'ai un problème lié à OpenLayers mais c'est hors sujet...

    En tous cas, je respire enfin ! merci beaucoup

    => RESOLU
    Faites une recherche sur le forum et/ou sur internet et lisez la doc officielle avant de poser une question svp.
    et n'oubliez pas de lire les FAQ !
    FAQ Java et les cours et tutoriels Java
    Doc JAVA officielle
    AngularJS 1.x
    Angular 2

    Do it simple... and RTFM !

  2. #22
    Membre expérimenté Avatar de slim
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2002
    Messages
    938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2002
    Messages : 938
    Points : 1 337
    Points
    1 337
    Par défaut
    Malheureusement mon problème n'est pas complètement résolu.

    Prenons un exemple :

    Sur la page aspx, j'ai trois fonctions javascript : init() qui est chargée lors du chargement du body. Les deux autres fonctions sont appelées à partir du code behind.
    Ce que je voudrais faire, c'est exécuter init() avant ces deux fonctions. Le problème est qu'elles s'exécutent après...
    Sauriez-vous comment faire ? A savoir que j'ai un script manager déclaré sur ma page aspx.

    Page ASPX :
    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
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>
     
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
     
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head runat="server">
        <title>Page sans titre</title>
        <script type="text/javascript">
            var variable1, variable2;
     
     
            function init()
            {
                var string = "voila un autre test du body";
                alert (string);
            }
     
            function test()
            {
                var i = "voila le test";
                alert(i);
            }
     
            function ecrire(vari1, vari2)
            {
                variable1 = vari1;
                variable2 = vari2;            
                alert(variable1 + variable2);
            }
     
        </script>
    </head>
    <body onload="init()">
        <form id="form1" runat="server">
        <asp:ScriptManager ID="ScriptManager1" runat="server">
        </asp:ScriptManager>
        <div>
            <script type="text/javascript">test();</script>
        </div>
        </form>
    </body>
    </html>
    Page CS :
    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
    23
    24
    using System;
    using System.Collections;
    using System.Configuration;
    using System.Data;
    using System.Linq;
    using System.Web;
    using System.Web.Security;
    using System.Web.UI;
    using System.Web.UI.HtmlControls;
    using System.Web.UI.WebControls;
    using System.Web.UI.WebControls.WebParts;
    using System.Xml.Linq;
     
    public partial class _Default : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            string a = "première variable behind";
            string b = "deuxième variable behind";
            string script = "<script type=\"text/javascript\">ecrire('" + a + "'" + "," + "'" + b + "');</script>";
            Page.ClientScript.RegisterStartupScript(this.Page.GetType(), "scriptTest", script);
     
        }
    }
    Je pense que c'est le "RegisterStartupScript" qu'il faut changer. J'ai essayé plusieurs méthodes du script manager (Page.ClientScript) mais init() est toujours exécuté en dernier...

    Merci.
    Faites une recherche sur le forum et/ou sur internet et lisez la doc officielle avant de poser une question svp.
    et n'oubliez pas de lire les FAQ !
    FAQ Java et les cours et tutoriels Java
    Doc JAVA officielle
    AngularJS 1.x
    Angular 2

    Do it simple... and RTFM !

  3. #23
    Membre confirmé
    Inscrit en
    Juin 2007
    Messages
    459
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 459
    Points : 553
    Points
    553
    Par défaut
    Malheureusement mon problème n'est pas complètement résolu.
    Tu exposes maintenant un problème différent du problème initial. La succession des questions nuit à la lisibilité de la discussion.

    Soit tu fais un appel successif des fonctions dans le onload, soit tu sors la fonction init() du onload pour la mettre avant les autres dans la page.

  4. #24
    Membre expérimenté Avatar de slim
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2002
    Messages
    938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2002
    Messages : 938
    Points : 1 337
    Points
    1 337
    Par défaut
    Citation Envoyé par BCmDev Voir le message
    Tu exposes maintenant un problème différent du problème initial. La succession des questions nuit à la lisibilité de la discussion.
    C'etait toujours par rapport au probleme initial puisqu'il s'agit de la fonction RegisterStartupScript...

    Cette fonction exécute le javascript au démarrage.

    Merci
    Faites une recherche sur le forum et/ou sur internet et lisez la doc officielle avant de poser une question svp.
    et n'oubliez pas de lire les FAQ !
    FAQ Java et les cours et tutoriels Java
    Doc JAVA officielle
    AngularJS 1.x
    Angular 2

    Do it simple... and RTFM !

  5. #25
    Membre expérimenté Avatar de slim
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2002
    Messages
    938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2002
    Messages : 938
    Points : 1 337
    Points
    1 337
    Par défaut
    Citation Envoyé par BCmDev Voir le message
    Soit tu fais un appel successif des fonctions dans le onload, soit tu sors la fonction init() du onload pour la mettre avant les autres dans la page.
    je peux pas appeler une fonction c#du code behind dans le onload du body....
    Faites une recherche sur le forum et/ou sur internet et lisez la doc officielle avant de poser une question svp.
    et n'oubliez pas de lire les FAQ !
    FAQ Java et les cours et tutoriels Java
    Doc JAVA officielle
    AngularJS 1.x
    Angular 2

    Do it simple... and RTFM !

  6. #26
    Membre confirmé
    Inscrit en
    Juin 2007
    Messages
    459
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 459
    Points : 553
    Points
    553
    Par défaut
    Le problème, c'est que tu mixes bien trop de méthodes pour que ton développement soit cohérent : un appel déclaré dans la page .aspx sur le onload, un appel déclaré dans la page .aspx dans un div (?) et un enregistrement d'appel dans le code behind.
    Rationalise un peu tout ça ! Regroupe tes déclarations d'appels.
    Si tu veux déclarer des appels de fonctions dans le onload du body depuis le code behind, c'est très facile :
    Dans la page aspx :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <body id="myBody" runat="server">
    Dans la page de code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    this.myBody.Attributes.Add("onload", "javascript:alert('Body onload !');");

  7. #27
    Membre expérimenté Avatar de slim
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2002
    Messages
    938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2002
    Messages : 938
    Points : 1 337
    Points
    1 337
    Par défaut
    Citation Envoyé par BCmDev Voir le message
    Le problème, c'est que tu mixes bien trop de méthodes pour que ton développement soit cohérent : un appel déclaré dans la page .aspx sur le onload, un appel déclaré dans la page .aspx dans un div (?) et un enregistrement d'appel dans le code behind.
    Rationalise un peu tout ça ! Regroupe tes déclarations d'appels.
    Si tu veux déclarer des appels de fonctions dans le onload du body depuis le code behind, c'est très facile :
    Dans la page aspx :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <body id="myBody" runat="server">
    Dans la page de code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    this.myBody.Attributes.Add("onload", "javascript:alert('Body onload !');");
    C'est exactement le contraire de ce que je veux faire. En plus, j'ai une page maitre. J'ai pas accès à this.myBody. De toute façon, ca me servirait à rien. Ce que je veux, ce n'est pas appeler le body a partir du code behind c'est le contraire : appeler des fonctions c# (behind) au onload du body (si possible) sinon après le onload (ce qui serait plus intéressant).

    Tu me dis de rationaliser mon code... je travaille avec OpenLayers. Si je ne mets pas le init() dans le onload du body, la carte ne se charge pas. Toutes les fonctions appelées après, effectuent des traitements sur la carte. Donc ces fonctions doivent s'exécuter après le init(). Avec mon code en behind, ces fonctions s'exécutent avant. J'ai testé chaque instruction avec des 'alert' et c'est ce que j'ai remarqué.


    En tous cas merci bcp
    Faites une recherche sur le forum et/ou sur internet et lisez la doc officielle avant de poser une question svp.
    et n'oubliez pas de lire les FAQ !
    FAQ Java et les cours et tutoriels Java
    Doc JAVA officielle
    AngularJS 1.x
    Angular 2

    Do it simple... and RTFM !

  8. #28
    Membre expérimenté Avatar de slim
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2002
    Messages
    938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2002
    Messages : 938
    Points : 1 337
    Points
    1 337
    Par défaut
    Solution :

    J'ai supprimé onload="init()" du body et j'ai mis ce code à la fin de mon script manipulant OpenLayers :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    if (window.attachEvent) { // msie, opera;
           window.attachEvent("onload",init);
    } else if (window.addEventListener) { // mozilla;
           window.addEventListener("load",init,true);
    }
    Faites une recherche sur le forum et/ou sur internet et lisez la doc officielle avant de poser une question svp.
    et n'oubliez pas de lire les FAQ !
    FAQ Java et les cours et tutoriels Java
    Doc JAVA officielle
    AngularJS 1.x
    Angular 2

    Do it simple... and RTFM !

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. appel d'une fonction C à partir de code asm !
    Par b52x_med dans le forum Programmation d'OS
    Réponses: 1
    Dernier message: 05/08/2012, 13h57
  2. Appel d'une fonction mysql dans du code javascript
    Par johnson95 dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 26/09/2008, 16h29
  3. [Compilation] Appel d'une fonction C++ depuis du code C
    Par bladerunners dans le forum C++
    Réponses: 1
    Dernier message: 06/09/2006, 14h26
  4. Réponses: 4
    Dernier message: 28/07/2006, 14h01
  5. [javascript] appel d'une fonction à partir d'une popup
    Par LE NEINDRE dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 14/08/2005, 15h14

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