HEEEEEEEEEEELP ME : Pasage de TABLEAU entre 2 formulaire

sg_kan Messages postés 20 Date d'inscription mercredi 12 mai 2004 Statut Membre Dernière intervention 21 mai 2004 - 13 mai 2004 à 11:32
jesusonline Messages postés 6814 Date d'inscription dimanche 15 décembre 2002 Statut Membre Dernière intervention 13 octobre 2010 - 15 mai 2005 à 01:21
AIDEZ MOI SVP
Bonjour je voudrait savoir comment passer en argument d'une page a une autre un tableau ARRAYLIST
Pour les string et autre je fait :
dans la premiere page :
Response.Redirect("Page2.aspx?x="+ValX);
et pour récupérer le champ dans la (Page2.aspx )je fait :
Request.QueryString["x"];

Alors pour passer un ARRAYLIST je n'arrive pas a comprendre comment faire
ni pour l'envoie ni pour la récupération
Merci de me répondre
Bye

Nb: je ne veut pas utiliser de sessions car ce n'est pas optimiser comme solution

17 réponses

kaskran Messages postés 35 Date d'inscription mardi 30 septembre 2003 Statut Membre Dernière intervention 7 mars 2005
13 mai 2004 à 16:53
a moins que je me gourre il est impossible d'envoyer un tableau, ou tout information trop complexe (comme un object) dans l'adresse.

D'apres moi ta seule solution est d'utiliser les variables sessions :
Dim t as new arraylist()
Session("nom_variable")=t

ensuite dans la page suivante tu fais :
Dim t as new arraylist()
t=Session("nom_variable")

bonnechance
0
kaskran Messages postés 35 Date d'inscription mardi 30 septembre 2003 Statut Membre Dernière intervention 7 mars 2005
13 mai 2004 à 16:56
oups je n'avais pas vu ton Nb, ben franchement je vois pas alors
0
jesusonline Messages postés 6814 Date d'inscription dimanche 15 décembre 2002 Statut Membre Dernière intervention 13 octobre 2010 29
13 mai 2004 à 18:33
Je viens d'y repenser dans la methode que je t'ai donné tout à l'heure je l'avais fait vite fait et meme un peu trop vite fait car je me suis pas preoccupé de la reception :p

donc revoici le code :
dim Query as string
for each s as string in Al
Query &= s & ";"
next
response.redirect("page2.aspx?Query=" & query )

pour la reception
dim query as string = request.querystring("query")

Dim result as string() ' je sais jamais ou je dois mettre les parenthese d'habitude c'est vs.net qui me gere ca, mais je l'ai pas d'ouvert la :p

result() = query.split(";")

donc resutl() est un tableaux de string ...

@+

Cyril
0
jesusonline Messages postés 6814 Date d'inscription dimanche 15 décembre 2002 Statut Membre Dernière intervention 13 octobre 2010 29
13 mai 2004 à 18:40
j'ai fait une erreur :-/ je m'en suis apercu car j'etais pas sur des () donc j'ai reecrit ca sous vs.net :) donc revoici

Dim Query As String
For Each s As String In Al
Query &= s & ";"
Next
Response.Redirect("page2.aspx?Query=" & Query)

.
.
.
.
.
Dim Query As String = Request.QueryString("Query")
Dim Result As String()

Result = Split(Query, ";")

Cyril
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
fmajet Messages postés 8 Date d'inscription jeudi 5 août 2004 Statut Membre Dernière intervention 15 mai 2005
14 mai 2005 à 17:51
Je n'arrive pas a utiliser les sessions

J'utilise la version beta de visual web developper 2005

J'ai deux fonction

Sub 1_click()
....
Sesssion("montableau")=Montableau
de type System.Web.UI.WebControls.Table

End sub
La pas de souci dans le debuggeur j'ariive a lire mon tableau dans ma session

mais ensuite impossible de le recuperer dans une autre procedure
en faisant Montableau=Sesssion("montableau")
des idées ?
Merci
0
jesusonline Messages postés 6814 Date d'inscription dimanche 15 décembre 2002 Statut Membre Dernière intervention 13 octobre 2010 29
14 mai 2005 à 17:58
c'est "normal" car Session("montableau") est du type object donc faut tu caste ton object pour le mettre dans le bon format

MonTableau = ctype(session("montableau"), webcontrols.table)


<HR>
Cyril - MCP ASP.net
Webmaster de : Hoshimi.CodeS-SourceS.fr
0
fmajet Messages postés 8 Date d'inscription jeudi 5 août 2004 Statut Membre Dernière intervention 15 mai 2005
14 mai 2005 à 19:25
Merci pour ton aide
Effectivement j'ai un warning de conversion implicte de type qui saute
avec ta methode.
Mais j'ai encore un souci , je viens d'identifier le pb
En fait dans la premiere methode juste avant

Sesssion("montableau")=Montableau
je mets

Panel2.Controls.Add(Montableau)

Quand je le vire ca marche bien, j'arrive a recuperer mon tableau sinon je recupere un tableau vide.


Je ne comprends pas vraiment pourquoi ?
J'ai l'intuition qu'il y a une histoire de clonage de mon tableau a utiliser mais
je ne saisis pas pourquoi.

Merci
0
jesusonline Messages postés 6814 Date d'inscription dimanche 15 décembre 2002 Statut Membre Dernière intervention 13 octobre 2010 29
14 mai 2005 à 19:41
Quand tu vires quoi ?

tu peux montrer un peu plus de code, car la j'arrive pas à cerner le problème


<HR>
Cyril - MCP ASP.net
Webmaster de : Hoshimi.CodeS-SourceS.fr
0
fmajet Messages postés 8 Date d'inscription jeudi 5 août 2004 Statut Membre Dernière intervention 15 mai 2005
14 mai 2005 à 19:47
Sub 1

Panel2.Controls.Add(mytable)


Session(
"tabl") = mytable1

end sub


sub 2
mytable2 =
CType(Session(
"tabl"), WebControls.Table)
end sub

Si je mets Panel2.Controls.Add(mytable) en commentaire je recupere bien mon tableau dans la procedure 2, si je ne le fait pas je recupere un tableau vide
0
fmajet Messages postés 8 Date d'inscription jeudi 5 août 2004 Statut Membre Dernière intervention 15 mai 2005
14 mai 2005 à 19:47
pardon c'est


Sub 1

Panel2.Controls.Add(mytable1)


Session("tabl") = mytable1

end sub


sub 2
mytable2 =
CType(Session(
"tabl"), WebControls.Table)
end sub

Si je mets Panel2.Controls.Add(mytable) en commentaire je recupere bien mon tableau dans la procedure 2, si je ne le fait pas je recupere un tableau vide
0
jesusonline Messages postés 6814 Date d'inscription dimanche 15 décembre 2002 Statut Membre Dernière intervention 13 octobre 2010 29
14 mai 2005 à 19:57
je n'avais encore jamais vu de problème du genre :-/

Si tu fais pour tester

dim tmptable as table = mytable1
panel2.controls.add(tmptable)
session("tabl") = mytable1

Ou alors

session("tabl") = mytable1
panel2.controls.add(mytable1)

et sinon quand tu fais un point d'arret, est-ce que le mytable1 vaut nothing aprés l'ajout au panel2 ?


<HR>
Cyril - MCP ASP.net
Webmaster de : Hoshimi.CodeS-SourceS.fr
0
fmajet Messages postés 8 Date d'inscription jeudi 5 août 2004 Statut Membre Dernière intervention 15 mai 2005
14 mai 2005 à 23:53
Oui j'ai testé mais ca ne marche pas

En fait il s'agit bien d'un probleme de clones

car pour tout ce qui est de type objet(au sens large, les web controls table sont des objets) vb.net passe uniquement par reference

par exemple
dim a as object
dim b as object

a=b

a=2

alors b=2 (par valeur ca n'est pas le cas)

du style

dim a as integer
dim b as integer

a=b

alors a=2 mais sans assigner une valeur a b

du coup il faudrait que je puisse cloner b dans a pour ne recopier que les valeurs

a=b.clone

clone existe pour le type object mais ca ne marche pas sur web controls table qui est pourtant un descendant de object

J'avais deja eu ce pb en migrant de vba en vb.net et j'avais rattrapper le coup en clonant.

Mais la impossible de le faire et ca me saoule de recopier un à un les elements de mon tableau dans un autre

Merci pour ton aide en tout cas.
0
jesusonline Messages postés 6814 Date d'inscription dimanche 15 décembre 2002 Statut Membre Dernière intervention 13 octobre 2010 29
15 mai 2005 à 00:03
Waouhhh !

Alors la tu m'en apprend, je ne savais pas que les types object étaient passé par défaut en reference, alors la je n'ai aucune idée de comment résoudre ca, mais je vais me documenter, essayer de comprendre comment tout ceci fonctionne, et tenter de te répondre :)

En tout cas tient moi au courant si tu trouves une autre solution que de recréer ton tableau.

Idées con, tu peux te servir des mots clés, ByVal et ByRef ?


<HR>
Cyril - MCP ASP.net
Webmaster de : Hoshimi.CodeS-SourceS.fr
0
fmajet Messages postés 8 Date d'inscription jeudi 5 août 2004 Statut Membre Dernière intervention 15 mai 2005
15 mai 2005 à 00:18
Oui j'ai pensé a mettre BYVal table as object mais ca ne change rien .Les object sont by reference par default

J'ai remarqué la premiere fois quand j'appelais une fonction avec un argument de type object et systematiquement en sortie de cette function mon argument avait changé de valeur

En fait dans ma fonction je faisais un truc du style

variable locale=mon argument d'ou d'enormes bugs

en faisant variable locale=mon argument.clone ca a marché nickel
een sortie de fonction mon argument n'avait pas changé

Mais ces deux variables etaient de types Object qui contient la methode clone .Dans le cas du web control je seche .

En tout cas merci bcp pour ton aide.
0
jesusonline Messages postés 6814 Date d'inscription dimanche 15 décembre 2002 Statut Membre Dernière intervention 13 octobre 2010 29
15 mai 2005 à 00:26
j'ai pas les memes choses que toi, mes valeurs ne sont pas passé en reference meme pour les objects.

Voici mon code



Protected
Sub Page_Load(
ByVal sender
As
Object,
ByVal e
As System.EventArgs)
Handles
Me.Load

Dim a
As
Object
Dim b
As
Object
a =
CObj(b)
a =
CObj(2)
write(a)
write(b)

End
Sub



Private
Sub write(
ByVal s
As
Object)

Me.Literal1.Text &= s.ToString &
"
"
End
Sub

j'ai essayé avec le CObj ou pas, et ca me met reference not set to an instance of an object, donc b = nothing chez moi !


<HR>
Cyril - MCP ASP.net
Webmaster de : Hoshimi.CodeS-SourceS.fr
0
fmajet Messages postés 8 Date d'inscription jeudi 5 août 2004 Statut Membre Dernière intervention 15 mai 2005
15 mai 2005 à 00:49
Avec les entiers ca marche normalement
tiens voila de la doc sur le sujet
http://plasserre.developpez.com/v1-6val.htm
0
jesusonline Messages postés 6814 Date d'inscription dimanche 15 décembre 2002 Statut Membre Dernière intervention 13 octobre 2010 29
15 mai 2005 à 01:21
J'ai testé avec une classe et ca passe bien les params par reference, ca me revient maintenant en mémoire.

Pour ce qui est de la fonction clone, il faut que la classe implements ICloneable et c'est loin d'etre le cas de tout le monde, il me semble que c'est expliqué dans l'excellent bouquin de Richard Clark : "Au coeur de Visual Basic .net" mais j'arrive pas à retrouver la page :p

mais tient moi au courant :) j'essayerais de voir ca demain :p et surement relire le bouquin de Richard bientot


<HR>
Cyril - MCP ASP.net
Webmaster de : Hoshimi.CodeS-SourceS.fr
0
Rejoignez-nous