Article complet: Ma modal popup ouvre plein de fenêtres !

21/12/2009

Permalink 10:34:00, Catégories: Récapitulatif .NET, Récapitulatif Web, Récapitulatif, ASP.NET, 336 mots   French (FR) , Philippe Vialatte

[.NET][Web] Ma modal popup ouvre plein de fenêtres !

Pour une fois, un post qui n'est pas *directement* relié à du .net ;)

Dans le cadre d'un projet de développement web, on à le scénario suivant, somme tout classique :

  • une page doit afficher une popup
  • la popup doit être modale
  • la popup doit être pleine d'Ajax

Jusqu'ici, la réponse standard, c'est de faire une div invisible, qu'on va afficher au besoin avec le z-index qui va bien (avec le ModalPopupExtender, une popup jquery, ou en la refaisant à la main).

Tout ceci marche super bien pour une petite popup de confirmation, mais quand on arrive à 5 popup contenant des grilles ajaxifiées, des règles de validation et tout le tralala, la réactivité de la page descends en flèche, et on en vient à regretter d'avoir vendu le projet ;)

[Suite:]

Donc, du coup, la solution de repli, c'est de re-transformer les divs en "vraies" popup, et de les charger avec le code suivant :

       function openWindow(page, height, width){
       
           if (window.showModalDialog) {
               window.showModalDialog(page,null, "dialogWidth:" + width + "px;dialogHeight:" + height + "px");
           } else {
               var args = "height=" + height + ",width=" + width + ",toolbar=no,directories=no,status=no,menubar=no,scrollbars=no,resizable=no ,modal=yes";
               window.open(page+"?uniqueId=" + uniqueId, null, args);
           }
      }

Tout ceci fonctionne pour le mieux....

Jusqu'au moment ou on commence à utiliser les parties Ajaxifiées...

En effet, toute action de post ou de get dans une popup modale ouvre une nouvelle fenêtre, que ce soit sur un lien ou sur un post.incluant les actions effectuées dans un UpdatePanel.

Après pas mal de grattage de crâne, la solution est en fait toute simple. Il suffit en effet d'ajouter, dans le head de la page, cette petite ligne de code :

    [base target="_self" ]

Et tout re-fonctionne pour le mieux ;)

Juste une note en passant.cette méthode pour utiliser les popups à l'avantage annexe de bien séparer les composant pour des formes relativement compliquées avec des composants de plusieurs vendeurs (genre, une grille Telerik, un extender du control toolkit et un autocomplete maison.)

Social Bookmarking:

                                     

Commentaires, Pingbacks:

Connectez-vous pour vous abonner à cet article:

Flux de commentaires pour cet article : Atom 1.0  RSS 2.0

Cet article n'a pas de Commentaires/Pingbacks pour le moment...

Vous devez être identifié pour poster un commentaire.

Liste des blogs

Blog de Philippe Vialatte

Ce blog contient:
- des bouts de code
- quelques news
- des états d'âme

....et des fois, quelque chose d'intéressant ;)

Blog roll

Profil MVP

Réseaux sociaux



Catégories


Rechercher

<  Novembre 2011  >
Lun Mar Mer Jeu Ven Sam Dim
  1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30        

Syndiquez ce blog XML

Articles :

Commentaires :

 
 
 
 
Partenaires

Hébergement Web