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 :

Passage et utilisation d'un tableau de structure de c# � Javascript


Sujet :

ASP.NET

  1. #1
    Membre �m�rite 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
    Par d�faut Passage et utilisation d'un tableau de structure de c# � Javascript
    Bonjour,

    J'ai une page Accueil dans laquelle je consomme en code behind (c#) un web service qui me retourne un tableau de structure. Ce tableau je voudrais l'utiliser dans ma page Accueil.aspx.

    J'ai essay� ce code l� mais aucun ne marche.
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
           WSProxy.WSClass proxy = new WSProxy.WSClass();
           WSProxy.Struct[] listStructs = proxy.getListStructs();
    Jusque l�, tout se passe bien. Je r�cup�re bien mon tableau de structure "listStructs" (test� en mode d�bogage et affichage dans des labels).

    Ensuite, j'ai cr�� un contr�le cach� input dans lequel j'enregistre mon tableau que j'essaye de r�cup�rer en javascript.

    C# :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    myHiddenInput.Value = listStructs.ToString();
    ASPX :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
             <input id="myHiddenInput" type="hidden" NAME="Hidden1">
    JAVASCRIPT :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    var myTextField = document.getElementById('myHiddenInput');
    alert("You entered: " + myTextField.value);
    ca marche pas...

    J'ai utilis� une autre m�thode.
    J'ai d�clar� un tableau en javascript dans le head.
    et dans le code behind, je fais �a :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    Page.ClientScript.RegisterClientScriptBlock(Page.GetType(), "cle1", "<script type=\"text/javascript\">jsListStructs = " + ListStructs + "; </script>");
    j'essaie de l'afficher avec un alert mais ca marche pas non plus. (j'ai ajout� ToString() � ListStructs dans la chaine de caract�re et ca marche pas non plus...

    Auriez-vous une id�e sioupl� ?
    Merciiiii.
    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. #2
    R�dacteur
    Avatar de Louis-Guillaume Morand
    Homme Profil pro
    Cloud Architect
    Inscrit en
    Mars 2003
    Messages
    10 839
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (�le de France)

    Informations professionnelles :
    Activit� : Cloud Architect
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Mars 2003
    Messages : 10 839
    Par d�faut
    1- comment tu fais pour acceder � ton champ hidden sans l'attribute runat="server"?

    2- quand on fait du JS, on doit utiliser la propri�t� ClientID (� moins que tu ne fasses du 1.1)

    t'as utilis� un debuggueur de javascript pour voir le soucis?
    t'as regard� la source pour voir le code javascript g�n�r�?

  3. #3
    Membre �clair� Avatar de Ishizaki
    Inscrit en
    Avril 2006
    Messages
    262
    D�tails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 262
    Par d�faut
    Il se d�clenche quand ton JS ? sur un click ? sur un onload ? Je dis �a comme �a mais si tu fais appel � un event js, et que tu utilises RegisterStartupScript, tu dois rajouter un attribut sur l'item qui va g�n�rer ton js, genre :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    myButton.Attributes.Add("onclick",monjs)

  4. #4
    R�dacteur
    Avatar de Louis-Guillaume Morand
    Homme Profil pro
    Cloud Architect
    Inscrit en
    Mars 2003
    Messages
    10 839
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (�le de France)

    Informations professionnelles :
    Activit� : Cloud Architect
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Mars 2003
    Messages : 10 839
    Par d�faut
    Citation Envoy� par Ishizaki Voir le message
    Il se d�clenche quand ton JS ? sur un click ? sur un onload ? Je dis �a comme �a mais si tu fais appel � un event js, et que tu utilises RegisterStartupScript, tu dois rajouter un attribut sur l'item qui va g�n�rer ton js, genre :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    myButton.Attributes.Add("onclick",monjs)
    pourquoi faire? l� son javascript va s'initialiser au d�marrage, il ne fait qu'initialiser une variable. le reste importe peu puisque cela sera forc�ment �xecuter plutard lorsque la variable sera sett�e

  5. #5
    Membre �clair� Avatar de Ishizaki
    Inscrit en
    Avril 2006
    Messages
    262
    D�tails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 262
    Par d�faut
    Je le sais bien qu'il ne fait qu'initialiser une variable, je pensais simplement qu'il voulait r�cuperer l'�l�ment sur un event...

  6. #6
    Membre �m�rite 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
    Par d�faut
    Citation Envoy� par Louis-Guillaume Morand Voir le message
    1- comment tu fais pour acceder � ton champ hidden sans l'attribute runat="server"?
    oui, bien sur, c'etait juste un mauvais copier coller... d�sol�.

    Citation Envoy� par Louis-Guillaume Morand Voir le message
    2- quand on fait du JS, on doit utiliser la propri�t� ClientID (� moins que tu ne fasses du 1.1)
    alors j'ai ce code en code behind :

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    hidden.Value = tabListStructs.ToString();
    tabListStructs �tant mon tableau de structures.

    ASPX :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    <input id="hidden" type="hidden" runat="server" />
        <script type="text/javascript"> var jsListStructs = document.getElementById('<%=hidden.ClientID%>').value;</script>
        <script type="text/javascript">alert(jsListStructs); </script>
    Citation Envoy� par Louis-Guillaume Morand Voir le message
    t'as regard� la source pour voir le code javascript g�n�r�?
    Source g�n�r�e :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    <input name="ctl00$ContentPlaceHolder4$hidden" type="hidden" id="ctl00_ContentPlaceHolder4_hidden" value="WSProxy.Struct[]" />
        <script type="text/javascript"> var jsListStructs = document.getElementById('ctl00_ContentPlaceHolder4_hidden').value;</script>
        <script type="text/javascript">alert(jsListStructs); </script>
    messageBox :
    Citation Envoy� par Louis-Guillaume Morand Voir le message
    t'as utilis� un debuggueur de javascript pour voir le soucis?
    D�sol�, mais non, je code sur MS Web developper 2008. le d�boggeur ne m'affiche pas le contenu des variables...

    je ne vois pas comment avoir le contenu du tableau...
    j'ai essay� avec alert(jsListStructs[0].attribut1); mais il me retourne undefined sur le messagebox.


    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 !

  7. #7
    R�dacteur
    Avatar de Louis-Guillaume Morand
    Homme Profil pro
    Cloud Architect
    Inscrit en
    Mars 2003
    Messages
    10 839
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (�le de France)

    Informations professionnelles :
    Activit� : Cloud Architect
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Mars 2003
    Messages : 10 839
    Par d�faut
    D�sol�, mais non, je code sur MS Web developper 2008. le d�boggeur ne m'affiche pas le contenu des variables...
    le debuggueur Javascript, tu peux l'avoir avec IE ou aussi avec Firebug sous firefox. y a rien de mieux, tu peux faire du pas � pas, faire des watch, etc
    teste le

  8. #8
    Membre �m�rite 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
    Par d�faut
    Firebug est excellent! je ne connaissais pas... merci!!

    Le contenu de la variable javascript est bien WSProxy.Struct[].
    Il faudrait que je cr�e dynamiquement des input pour chaque structure du tableau (en code behind) pour les r�cup�rer en javascript ? Mais l�, j'aurais le m�me probl�me, ca sera toujours un tableau, enfin une structure. Je pourrais faire maStruct.attribut1 ?
    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 !

  9. #9
    Membre �m�rite 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
    Par d�faut
    J'ai essay� plusieurs choses... mais j'ai pas pu r�cup�rer le tableau en javascript... !

    la cr�ation dynamique me pose des probl�mes de gestion des ID des contr�les...

    N'y a t-il pas une m�thode simple pour ce tableau de structures ?

    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 !

  10. #10
    Expert confirm�

    Avatar de Philippe Vialatte
    Homme Profil pro
    Architecte technique
    Inscrit en
    Juillet 2004
    Messages
    3 029
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 47
    Localisation : France, Alpes Maritimes (Provence Alpes C�te d'Azur)

    Informations professionnelles :
    Activit� : Architecte technique
    Secteur : High Tech - Produits et services t�l�com et Internet

    Informations forums :
    Inscription : Juillet 2004
    Messages : 3 029
    Par d�faut
    En fait, tu veux pouvoir convertir ta liste de WSProxy.Struct[] en variable javascript, non ?

    Donc, fais en un tableau javascript


    Genre, si WSProxy.Struct a comme membres m1 et m2
    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
     
     
    myLiteral.Value = GenerateJavascriptArray(listStructs);
     
    protected string GenerateJavascriptArray(WSProxy.Struct[] structs){
        StringBuilder stb = new StringBuilder();
     
        stb.Append("<script type='text/javascript'>\n");
        stb.Append("var jsListStructs = [\n");
     
        foreach (test t in structs){
             stb.Append("{m1: '").Append(t.m1);
             stb.Append("',m2: '").Append(t.m2);
             stb.Append("'}\n,");
       }
       stb.Remove(stb.Length - 2, 2);
       stb.Append("];");
       stb.Append("</script>");
       return stb.ToString();
    }
    Et cote aspx :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
     
    <asp:literal id="myLiteral" runat="server" />
    <script type="text/javascript">alert(jsListStructs); </script>

    Bon, c'est pas trop teste, c'est du snippetcompiler, mais j'ai deja fait comme ca sur un projet...


    Mon Blog

    The Cake is still a lie !!!



    Vous voulez contribuer � la rubrique .NET ? Contactez-moi par MP.
    Vous voulez r�diger des articles pour la rubrique .NET ? Voici la proc�dure � suivre.

  11. #11
    Membre �m�rite 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
    Par d�faut
    Trop fort !

    J'ai pas utilis� le m�me code, mais je l'ai arrang� � ma sauce.

    C'est parfait !

    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 !

  12. #12
    Membre �m�rite 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
    Par d�faut
    Bonjour,

    je reviens � la charge, parce que j'ai un petit probl�me avec le tableau.
    j'utilise le code de "parsing" du tableau de structure en tableau d'objets javascript. Je ne mets pas de balise <javascript> dans la g�n�ration du tableau. Je ne mets que le contenu de la variable car j'enregistre le r�sultat de la fonction de parsing dans une variable c# et je l'enregistre dans un contr�le hidden. Ensuite, je d�clare une balise javascript, une variable (var JListStructs =) et l�, je fais appel au contenu du contr�le hidden.
    Puis, quand je fais une alerte sur la variable que je r�cup�re, il m'affiche bien le tableau (parfaitement construit mais en chaine de caract�re : var JListStructs = [etc.]). Mais lors de l'ex�cution, il me met JListStructs[i] is undefined (c'est dans une boucle).

    Alors ce que j'ai fais, c'est mettre le contenu de la variable string c# (dans laquelle j'ai le tableau javascript) dans un label. J'ex�cute. et l�, je mets ce que m'affiche le label dans le code (var JListStructs = 'contenu du label que je colle ici', le contenu n'est pas coll� dynamiquement)

    Puisque l'affectation de la variable se fait statiquement :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    var JListStructs = [{var1:'contenuVar1', ....},{{var1:'contenuVar1', ....}];
    Mon tableau se construit correctement et je n'ai pas d'erreur. Alors que la copie dynamique pose probl�me. Je ne vois absolument pas pourquoi...
    Lors de l'alerte (affectation statique), il ne m'affiche pas le tableau en chaine de caractere mais il m'affiche

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    [object Object],[object Object],[object Object],[object Object]
    j'ai 4 objets.



    Mon code c#

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    protected string GenerateJavascriptArray(WSProxy.Struct[] structs){
        StringBuilder stb = new StringBuilder();
     
        stb.Append("[\n");
     
        foreach (test t in structs){
             stb.Append("{m1: '").Append(t.m1);
             stb.Append("',m2: '").Append(t.m2);
             stb.Append("'}\n,");
       }
       stb.Remove(stb.Length - 2, 2);
       stb.Append("]");
       return stb.ToString();
    }
    instruction dans laquelle j'appele la fonction de parsing :

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    tempHidden.Value = GenerateEventsJavascriptArray(JListStructs);
    Le code javascript :

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    var JListStructs = [document.getElementById('<%=tempHidden.ClientID%>').value];
    alert(JListStructs);
    Lors de l'alerte, il me met JListStructs undefined...

    Merci...

    [EDIT] quand je passe ma variable c# au controle "hidden", ma chaine de caractere qui construit le tableau d'objets javascript est modifi�e... je sais pas pourquoi. J'ai donc utilise un Response.Write directement pour remplir ma variable javascript sans passer par le input hidden. Et ca marche parfaitement[/EDIT]
    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.

Discussions similaires

  1. Utilisation d'un tableau de structures
    Par Amnael dans le forum D�buter
    R�ponses: 7
    Dernier message: 04/02/2014, 14h05
  2. R�ponses: 0
    Dernier message: 17/02/2013, 20h27
  3. Utilisation d'un tableau dans une structure
    Par Angelique64 dans le forum VB.NET
    R�ponses: 2
    Dernier message: 27/06/2009, 11h05
  4. R�ponses: 2
    Dernier message: 23/02/2009, 11h23
  5. R�ponses: 7
    Dernier message: 16/04/2007, 13h39

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