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 :
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
[object Object],[object Object],[object Object],[object Object]
j'ai 4 objets.
Mon code c#
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 :
tempHidden.Value = GenerateEventsJavascriptArray(JListStructs);
Le code javascript :
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]
Partager