Javascript - ShowModalDialog

kurisutofu64 Messages postés 16 Date d'inscription mercredi 18 février 2004 Statut Membre Dernière intervention 28 novembre 2007 - 26 nov. 2007 à 09:41
cs_some_one Messages postés 31 Date d'inscription mercredi 11 juillet 2007 Statut Membre Dernière intervention 22 août 2008 - 22 août 2008 à 10:56
Bonjour,
J'ai une fenetre asp.net (C#) Main.aspx qui ouvre une fenetre modale (?) quand j'appuie sur un bouton, et cela grace a javascript:
window.showModalDialog(Modal.aspx,... );

Cela fonctionne correctement et quand la fenetre modale est ouverte, un gridview est rempli par les donnees d'une table de base de donnees.
Tout ca, dans le code-behind.

Cela marche bien. Et une fois que je ferme la fenetre modale, je reviens bien sur la page principale. Main.aspx.

Le probleme vient apres ... lorsque je rappuie sur le bouton, la fenetre s'ouvre encore mais le code-behind n'est pas executé! Quelqu'un sait pourquoi?

C'est tres embetant car c'est dans le code behind que je recupere les mise a jour faite dans la table ... (mise a jour faites par la fenetre modale, la premiere fois que je l'ai ouverte)

Comment faire pour que la fenetre modale execute toujours le code-behind?

J'espere que vous pourrez m'aider.

Merci!

7 réponses

yann_lo_san Messages postés 1137 Date d'inscription lundi 17 novembre 2003 Statut Membre Dernière intervention 23 janvier 2016 26
26 nov. 2007 à 20:22
Comment fermes-tu le dialog modal ?

As-tu essayé avec un widow.open() ?

Appeles-tu le code behind dans le form_load, dans le test IsPostBack == false ?

Sans code, on ne peut pas t'aider plus que ça.
0
kurisutofu64 Messages postés 16 Date d'inscription mercredi 18 février 2004 Statut Membre Dernière intervention 28 novembre 2007
27 nov. 2007 à 06:00
- Pour fermer le dialog modal, j'utilise:

Response.Write("<script>window.close();</script>");

- window.open() ne bloque pas le code du main, si j'ai bien compris, et dans mon cas, la page Main doit attendre le retour ...

- Oui j'appelle le code behind dans le form_load:

protected void Page_Load(object sender, EventArgs e)
    {             
        String Revamped="";

        if (!IsPostBack && !String.IsNullOrEmpty(Request.QueryString["funddes"]))
        {
            Revamped = Request.QueryString["funddes"].Replace("_Sharp_", "#");
            ...
        }              
      
    }
Si je place un breakpoint sur La premiere instruction, la premiere fois, le debugger s'y arrete, mais pas les fois suivante ...
0
yann_lo_san Messages postés 1137 Date d'inscription lundi 17 novembre 2003 Statut Membre Dernière intervention 23 janvier 2016 26
27 nov. 2007 à 20:33
Y'a que 2 solutions,
ou tu ne repasses pas dans le IsPostBack,
ou la variable de chaine de requete (funddes) n'existe plus au 2eme passage. 

Je te conseille quant même de mettre un lien dans le modalDialog du style :
[javascript:self.close(); [Fermer]]
et d'essayer si cela fait la même chose.

Salut.
0
kurisutofu64 Messages postés 16 Date d'inscription mercredi 18 février 2004 Statut Membre Dernière intervention 28 novembre 2007
28 nov. 2007 à 01:28
Oui, je vais essayer.

Par contre, la condition "If" n'y ai pour rien car je place un breakpoint sur "String Revamped="";" qui est la premiere instruction donc dans tout les cas, ca devrait stopper ...

De plus, quand j'ouvre la fenetre, dans "funddes", il peut y avoir plusieurs donnees ou une seule.

Lorsque j'ouvre la premiere fois avec plusieurs donnees, je ferme, et je rouvre, le probleme se passe.
Si j'ouvre a nouveau mais avec une seul donnee, ca marche. Mais apres, si je rouvre avec une seule donnee, ca marche plus non plus ...

Je sais pas si je suis clair... voici l'ordre :

1- J'ouvre le dialogue modal avec funddes="data1;data2;data3"
    --> Dialogue ouvert. Code-behind executé.
2- Je ferme le dialogue modal
    --> Dialogue fermé. Retour au Main
3- J'ouvre le dialogue modal avec funddes="data1;data2;data3"
     --> Dialogue ouvert. Code-behind non executé.
4- Je ferme le dialogue modal

    --> Dialogue fermé. Retour au Main
5- J'ouvre le dialogue modal avec funddes="data1"

    --> Dialogue ouvert. Code-behind executé.
6- Je ferme le dialogue modal

    --> Dialogue fermé. Retour au Main
7- J'ouvre le dialogue modal avec funddes="data1"

    --> Dialogue ouvert. Code-behind non executé.
8- Je ferme le dialogue modal

    --> Dialogue fermé. Retour au Main

Apres cela, ouvrri avec funddes="data1" ou bien funddes="data1;data2;data3"ne lance pas le code-behind ...

On dirait qu'il y a une sauvegarde de la fenetre ou je ne sais pas quoi ... J'ai pensé au cache mais je ne sais ni comment le verifier, ni comment resoudre ca ...
0

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

Posez votre question
kurisutofu64 Messages postés 16 Date d'inscription mercredi 18 février 2004 Statut Membre Dernière intervention 28 novembre 2007
28 nov. 2007 à 01:33
J'ai essayé [javascript:self.close(); [Fermer]] mais ca ne marche pas non plus ...
0
tofezone Messages postés 5 Date d'inscription mercredi 26 mars 2003 Statut Membre Dernière intervention 29 janvier 2008
28 janv. 2008 à 23:02
Bonsoir,


Ton problème vient surement du cache du navigateur.
Si tu mets le code ci-dessous dans le Page_Load de ta popup, Ca va forcer le navigateur à ne pas utilise le cache.


Response.CacheControl = "no-cache";
Response.AddHeader("Pragma", "no-cache");
Response.Expires = -1;
Response.ExpiresAbsolute = DateTime.Now.AddDays(-1);




A bientôt.
ToFe
0
cs_some_one Messages postés 31 Date d'inscription mercredi 11 juillet 2007 Statut Membre Dernière intervention 22 août 2008 1
22 août 2008 à 10:56
Je vous conseille de ne pas uiliser ShowModalDiag car ce n'est pas compatible avec Firefox. (Utilisez Window.Open)
0
Rejoignez-nous