[C#][.net] Ouvrir un popup, effectuer des saisies dans le popup (ASPX)

Ouvrir un popup, effectuer des saisies dans le popup (ASPX) [C#][.net] - C#/.NET managed - Programmation

Marsh Posté le 27-02-2007 à 17:52:10    

Hello,
 
J'ouvre un popup en javascript via window.open().
L'url passé est un .aspx qui contient une DataGrid éditable.
 
Je remplis les champs d'édition dans le footer, je valide, mais lors de l'itemCommand toutes les textbox sont dites vides :/.
Pour récupérer les textbox je fais un e.item.findoncontrol("nondutextbox" );
Il le trouve, mais la propriete text du textbox = "".
 
Quelqu'un saurait il m'expliquer pourquoi je n'arrive pas à récupérer les valeurs saisies des textbox ?
Probleme de viewstate ?
 
Je mets le meme grid dans lapage d'origine (donc pas de popup), je peux récupérer toutes les valeurs.
 
Merci.

Reply

Marsh Posté le 27-02-2007 à 17:52:10   

Reply

Marsh Posté le 27-02-2007 à 20:31:55    

c'est normal... il n'y a aucun lien entre les deux pages. Puisqu'il s'agit bien de cela en fait. Les connexions http sont stateless... Donc tout est perdu d'une page à une autre.
Cependant, si tu veux pouvoir concerver les données entre les pages, il y a quand même bcp de moyens (variables de session, cookie, url paramétrées)....
 
Rien ne t'empêche dans ton popup de traiter le click du bouton qui ferme ta popup (qui est une page http), de taper les valeurs des textbox en session et de les récupérer ensuite dans la page....

Reply

Marsh Posté le 27-02-2007 à 22:53:53    

moi23372 a écrit :

c'est normal... il n'y a aucun lien entre les deux pages. Puisqu'il s'agit bien de cela en fait. Les connexions http sont stateless... Donc tout est perdu d'une page à une autre.
Cependant, si tu veux pouvoir concerver les données entre les pages, il y a quand même bcp de moyens (variables de session, cookie, url paramétrées)....
 
Rien ne t'empêche dans ton popup de traiter le click du bouton qui ferme ta popup (qui est une page http), de taper les valeurs des textbox en session et de les récupérer ensuite dans la page....


Je remplis les textbox du popup qui est en fait une page ASPX, et quand je valide dans le popup je n'arrive a récupérer aucune saisie effectuées dans les textbox dans le meme aspx.
 
Je résume,
J'ai un ASPX qui contient un bouton qui ouvre un popup qui pointe lui meme sur un autre ASPX que j'appel page2.
Dans page2 il y a des textbox qui se trouvent dans un datagrid, j'effectue les saisies, je valide via un linkbutton qui a un commandName, j'entre dans l'itemCommand du grid. je fais le find control du textbox et il m'est indique que la propriete text du textbox = "". Et tout ca dans page2.
 
Par la suite je pourrai eventuellement transferer ces infos via la session, mais la n'est pas la question, je n'arrive pas  recuperer la saisie dans cette page de popup aspx (page2) qui contient des textbox ainsi que les méthodes permettant de traiter ces saisies.
 
Je pense que je me suis mal exprime ou que tu m'as mal compris :p, non ?

Reply

Marsh Posté le 28-02-2007 à 10:46:58    

:'(.

Reply

Marsh Posté le 28-02-2007 à 21:01:50    

je patauge totalement...
 
a partir du moment ou tu es dans une page aspx. Quand tu valide ta page, tu passes dans le code behind. Le viewstate et autre mécanisme du fm .NET te permette donc de récupérer les valeurs de tes champs...
 
Rien ne t'empêche de récupérer les valeurs dans le bon event. Cependant, j'ai l'impression que tu veux récupérer tout dans le page load... Je ne suis pas convaincu que tu peux faire cela...

Reply

Marsh Posté le 28-02-2007 à 23:55:25    

moi23372 a écrit :

je patauge totalement...
 
a partir du moment ou tu es dans une page aspx. Quand tu valide ta page, tu passes dans le code behind. Le viewstate et autre mécanisme du fm .NET te permette donc de récupérer les valeurs de tes champs...
 
Rien ne t'empêche de récupérer les valeurs dans le bon event. Cependant, j'ai l'impression que tu veux récupérer tout dans le page load... Je ne suis pas convaincu que tu peux faire cela...


pourquoi tu me parles du page_load ?
 
C'est tres simple, j'ai une page ASPX qui ouvre une autre fenetre du navigateur via un windows.open qui a comme parametre url une autre page ASPX.
Malheureusement dans cette nouvelle page il y a un grid, et dans ce grid il y a le footer, je remplis les textbox du present dans le footer, je clique sur le bouton du grid qui dit "ajouter" pour ajouter la ligne au grid, mais impossible de recuperer les saisies des textbox il me trouve systématiquement comme valeur "", bein sur la on est dans l'itemCommand du grid.

Reply

Marsh Posté le 09-03-2007 à 19:57:31    

tu ne crois pas que quelques lignes de code expliquerais bcp mieux à quoi tu veux arriver.

Reply

Marsh Posté le 10-03-2007 à 02:35:18    

moi23372 a écrit :

tu ne crois pas que quelques lignes de code expliquerais bcp mieux à quoi tu veux arriver.


pas trop vu qu'il s'agit surtout de génération de html et js.
 
je vais tenter un truc, mais le code n'est pas compilable et bourré de fautes, cela reste valable pour l'idée.
 
Je suis dans ma page1.aspx, il y a un bouton, sur ce bouton il y a l evenement onclick, sur le onclick je fais un windows.open(url), ca donne a peut pres  
ca :

Code :
  1. <input type=button id="toto" onclick="javascript:window.open("page2.aspx" ); return false;">


 
Je clique sur le bouton "toto", il m'ouvre une deuxieme fenetre du navigateur et charge page2.aspx.
dans ma page2.aspx, il y a un champs de saisie textbox ainsi qu'un bouton pour valider la saisie, ca donne quelque chose comme :
 

Code :
  1. <asp:textbox id="masaisie">
  2. <asp:button id="valider" value="je valide">


 
J'effectue une saisie dans "masaisie", je valide en cliquant sur le bouton "valider", il envoit le formulaire au serveur, je tombe sur l'évenement .net onclick du bouton "valider" :
 

Code :
  1. private void valider_click(sender, eventarg)
  2. {
  3.      string lectureDeLaSaisie = maisaisie.text;
  4.      Response.write(lectureDeLaSaisie);
  5. }


 
Et quoi que je saisisse dans "masaisie", masaisie.text est toujours égal à "", une chaîne vide.
 
Je ne comprends pas pourquoi.
 
Si par exemple, je donne une valeur par defaut  au textbox "masaisie" :
 

Code :
  1. <asp:textbox id="masaisie">
  2. <asp:button id="valider" value="je valide" text="glop">


 
Je valide, quelque soit le fait que j'efface "glop", que je change le texte ou que je ne fasse rien, lors de la validation, masaisie.text retournera "glop".
 
C'est peut être un peu plus clair :p.


Message édité par Clarkent le 10-03-2007 à 02:35:30
Reply

Marsh Posté le 10-03-2007 à 09:23:54    

Salut,
 
Euh je vais surement dire un truc très con, mais c'est souvent sur les trucs les plus cons qu'on bloque....
 
Je suppose que tu bindes ton Datagrid dans le Page_Load ? T'aurais pas oublié un :
 

Code :
  1. if (!Page.IsPostBack)
  2. {
  3.      ...
  4. }

Reply

Marsh Posté le 10-03-2007 à 13:28:30    

Bi11Bar0ud a écrit :

Salut,
 
Euh je vais surement dire un truc très con, mais c'est souvent sur les trucs les plus cons qu'on bloque....
 
Je suppose que tu bindes ton Datagrid dans le Page_Load ? T'aurais pas oublié un :
 

Code :
  1. if (!Page.IsPostBack)
  2. {
  3.      ...
  4. }



il ne me semble pas que je bind le grid systématiquement a chaque load, je ne pense pas l'avoir oublié :).
 
Sinon le problème que j'évoque semble étrange ou normal ? perso il me semble très étrange, je pourrai accuser une gestion hasardeuse du viewstate mais je ne sais pas :(.

Reply

Marsh Posté le 10-03-2007 à 13:28:30   

Reply

Marsh Posté le 11-03-2007 à 10:44:24    

en gros si je résume, dans ta page 2, tu n'as aucune saisie qui fonctionne en retour serveur.
 
Un exemple aussi con que ça, ça pue un problème de viewstate... Tes controles sotn bien en enableViewState = true?
 

Reply

Marsh Posté le 11-03-2007 à 13:12:29    

moi23372 a écrit :

en gros si je résume, dans ta page 2, tu n'as aucune saisie qui fonctionne en retour serveur.
 
Un exemple aussi con que ça, ça pue un problème de viewstate... Tes controles sotn bien en enableViewState = true?

voila tu as compris.
Et oui le viewstates est activé :/.
C'est pour ca que je n'y comprends rien, vous arrivez à reproduire la chose de votre coté ?
Ou suis je le seul le seul a avoir eu besoin de ce genre de truc :).

Reply

Marsh Posté le 11-03-2007 à 17:42:26    

oui tu es le seul concerné par ce genre de problème...
 
Je n'ai pas l'habitude bosser avec du .NET 1.1, en 2.0 ça fonctionne nikel chez moi...  
Mais normalement ça doit tourné aussi bien en 1.0...
 
Est-ce que le problème ne viendrait pas peut etre du fait que la page est ouverte en JAVASCRIPT
essaye de faire peut etre un retour serveur pour ça juste histoire de tester

Reply

Marsh Posté le 11-03-2007 à 18:45:56    

moi23372 a écrit :

oui tu es le seul concerné par ce genre de problème...
 
Je n'ai pas l'habitude bosser avec du .NET 1.1, en 2.0 ça fonctionne nikel chez moi...  
Mais normalement ça doit tourné aussi bien en 1.0...
 
Est-ce que le problème ne viendrait pas peut etre du fait que la page est ouverte en JAVASCRIPT
essaye de faire peut etre un retour serveur pour ça juste histoire de tester


merci. L'ouverture du popup est faite en js, je vois pas comment faire autrement.
 
Tu préconise d'utiliser un asp:button, de faire le submit et sur le onclick de l'asp:button de faire le window.open ?
Je n'ai pas tenté, je n'utilisais qu'un input type=button.
 
Je tenterai ça :(, mais ça ne m'enchante pas d'appeler systématiquement le serveur.

Reply

Marsh Posté le 12-03-2007 à 16:09:50    

tu tapes un simple bouton.
Tu traites son click coté serveur  
et tu fais un  
 
Server.Transfert("http://machin.aspx" );
ou  
Response.Redirect("http://machin.aspx" );
 
 
"Je tenterai ça , mais ça ne m'enchante pas d'appeler systématiquement le serveur."
C'est juste histoire de tester


Message édité par moi23372 le 12-03-2007 à 16:10:47
Reply

Marsh Posté le 13-03-2007 à 00:14:51    

et a quoi cela me serviriat ? car ca n'ouvre pas de popup.

Reply

Marsh Posté le 13-03-2007 à 08:41:38    

si tu ne veux pas le faire pour tester, ne le fait pas... Mais ne compte plus sur moi pour essayer de t'aider. Démerde toi.

Reply

Marsh Posté le 14-03-2007 à 00:30:09    

moi23372 a écrit :

si tu ne veux pas le faire pour tester, ne le fait pas... Mais ne compte plus sur moi pour essayer de t'aider. Démerde toi.


 :??: faudrait comprendre que tu veux faire pour tester, faire un server.transfert ou response.redirect n'ouvre pas de popup ca va afficher la page dans le navigateur actuel :o, donc je ne vois pas a quoi ca sert, ou alors je en vois pas ce que tu veux faire.
Et pas la peine de t'enerver quand je ne comprends pas ta solution :o.
Merci quand meme :hello:.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed