IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Bibliothèques & Frameworks Discussion :

tabContainer closabe


Sujet :

Bibliothèques & Frameworks

  1. #1
    Membre régulier Avatar de devkaty
    Inscrit en
    Mai 2009
    Messages
    174
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 174
    Points : 96
    Points
    96
    Par défaut tabContainer closabe
    salut tous le monde ,

    J'ai un tabContainer avec un seul onglet closable , et dans response d'une requette ajax j'affecte le resultat de cette requette au onglet , ( a chaque clique j'affecte le resulat au meme onglet ) .Mon problème c'est quand je ferme l'onglet j'ai eu deux erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    this.domNode is null
    this.scroller is undefined
    et quand je clique autre fois pour ouvrir l'onglet je trouve cette erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Probleme requete ajax 
     TypeError: this.edit is undefined
    voila mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    <div dojoType="dijit.layout.TabContainer" style="width: 100%; height: 100px;" jsId='tc' id='tc'>
      <div dojoType="dijit.layout.ContentPane" title="My liste client" closable="true" jsId="ongletListage"> 
      </div>
    </div>
    voila la methode js avec une requette ajax:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
     
    function listClient()
    {
    dojo.xhrGet({
                url :"edit-liste-client/idGroupClient/" + idGroupClient,
                handleAs :"text",
                timeout :5000,
                load : function(response) {
    dijit.byId("ongletListage").setContent(response);
    tc.startup();
     },
            error : function(error) {
                alert('Probleme requete ajax \n ' + error);
            }
            })
       }
    qu'est ce que je dois faire pour pas avoir ces erreurs , et je peux autre fois ouvrir un onglet avec le resultat qui vient dans la response de la requette ajax ?
    merci.

  2. #2
    Expert confirmé
    Avatar de emmanuel.remy
    Inscrit en
    Novembre 2005
    Messages
    2 855
    Détails du profil
    Informations personnelles :
    Âge : 55

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 855
    Points : 4 045
    Points
    4 045
    Par défaut
    Rapidement à vue de nez:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    function listClient()
    {
    dojo.xhrGet({
                url :"edit-liste-client/idGroupClient/" + idGroupClient,
                handleAs :"text",
                timeout :5000,
                load : function(response) {
                    ongletListage.attr("content", response);
                },
                error : function(error) {
                    alert('Probleme requete ajax \n ' + error);
                }
            });
       }
    ERE
    Quand une tête pense seule, elle devient folle.

  3. #3
    Membre régulier Avatar de devkaty
    Inscrit en
    Mai 2009
    Messages
    174
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 174
    Points : 96
    Points
    96
    Par défaut
    merci pour votre réponse sur le champ.

    mon probleme ce n'est pas dans l'affectation du resultat au onglet mais apres fermuture de l'onglet il donne les erreurs , c-a-d dans la 2 éme fois : 2eme ouvrture il trouve pas l'onglet .
    (je sais pas si apres la fermeture de l'onglet il détruie tabContainer !!!!!!!!).

  4. #4
    Expert confirmé
    Avatar de emmanuel.remy
    Inscrit en
    Novembre 2005
    Messages
    2 855
    Détails du profil
    Informations personnelles :
    Âge : 55

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 855
    Points : 4 045
    Points
    4 045
    Par défaut
    Citation Envoyé par devkaty Voir le message
    merci pour votre réponse sur le champ.

    mon probleme ce n'est pas dans l'affectation du resultat au onglet mais apres fermuture de l'onglet il donne les erreurs , c-a-d dans la 2 éme fois : 2eme ouvrture il trouve pas l'onglet .
    (je sais pas si apres la fermeture de l'onglet il détruie tabContainer !!!!!!!!).
    Dans ce cas, ne fait pas comme ça, crée un onglet après chaque résultat:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    cp = new dijit.layout.ContentPane({title: 'Titre'});
    cp.attr("content",XXXXXXXX);
    tc.addChild(cp);
     
    //nécessaire ?
    cp.startup();
    ERE
    Quand une tête pense seule, elle devient folle.

  5. #5
    Membre régulier Avatar de devkaty
    Inscrit en
    Mai 2009
    Messages
    174
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 174
    Points : 96
    Points
    96
    Par défaut
    j'ai testé cette solution mais toujours les memes érreurs

  6. #6
    Expert confirmé
    Avatar de emmanuel.remy
    Inscrit en
    Novembre 2005
    Messages
    2 855
    Détails du profil
    Informations personnelles :
    Âge : 55

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 855
    Points : 4 045
    Points
    4 045
    Par défaut
    Je n'avais pas percuté tout à l'heure, mais pourquoi charger de manière asynchrone via xhrGet tes données. Un simple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    function listClient()
    {
    ongletListage.attr('href', "edit-liste-client/idGroupClient/" + idGroupClient);
    }
    suffit.

    ERE
    Quand une tête pense seule, elle devient folle.

  7. #7
    Membre régulier Avatar de devkaty
    Inscrit en
    Mai 2009
    Messages
    174
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 174
    Points : 96
    Points
    96
    Par défaut
    Citation Envoyé par emmanuel.remy Voir le message
    Je n'avais pas percuté tout à l'heure, mais pourquoi charger de manière asynchrone via xhrGet tes données. Un simple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    function listClient()
    {
    ongletListage.attr('href', "edit-liste-client/idGroupClient/" + idGroupClient);
    }
    suffit.

    ERE
    Merci autre fois pour vos réponses ,
    J'ai testé cette solution aussi ,mais c'est pas cça le probleme.
    J'ai toujours les erreurs après la fermeture de l'onglet .
    voila mon dernier code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    31
    32
    33
    34
    35
    36
    37
     
    function getListClient()
    {
        dojo.xhrGet({
                url :"edit-liste-client/idGroupClient/" + idGroupActif,
                handleAs :"text",
                timeout :5000,
                load : function(response) {
                    if(dijit.byId("containerClient")){ 
                        var containerClient = dijit.byId("containerClient"); 
                    } else {                
                        var containerClient = new dijit.layout.TabContainer({ 
                            id : "containerClient", 
                            style: "height: 900px; width: 900px;" 
                        },myDiv); 
                    }    
                    if (dijit.byId("ongletListage")) {
                        dijit.byId("ongletListage").attr("content", response);
                    } else {
                        var ongletListage = new dijit.layout.ContentPane({
                            id :"ongletListage",
                            title: 'nomGroup',
                            closable :true,
                            onClose: function(){
                                return confirm("Etes-vous certain de vouloir fermer cette onglet  ?");
                            }
                        });
                        containerClient.addChild(ongletListage);
                        containerClient.startup();
                        dijit.byId("ongletListage").attr("content", response);
                    }
            },
            error : function(error) {
               alert('Probleme requete ajax \n ' + error);
            }
            })
    }
    j'affecte le résultat toujours pour le meme onglet.

  8. #8
    Expert confirmé
    Avatar de emmanuel.remy
    Inscrit en
    Novembre 2005
    Messages
    2 855
    Détails du profil
    Informations personnelles :
    Âge : 55

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 855
    Points : 4 045
    Points
    4 045
    Par défaut
    Salut devkaty,

    Désolé, j'ai testé ton code et je n'ai pas d'erreur...
    Au delà du fait que ne comprends pas pourquoi tu veux absolument passer par la destruction/reconstruction du contentpane et un xhrGet alors qu'un simple ongletListage.attr('href'...) fait l'affaire, je n'ai pas d'erreur.

    Autre bizarrerie: pourquoi tester si le TabContainer existe encore ? Tu le détruis lui aussi ? Mais c'est le Vietnam cette application !

    Et j'allais oublier: si tu n'as qu'un onglet, pourquoi ne pas mettre plutôt un simple contentpane plutôt qu'un tabcontainer ?

    ERE
    Quand une tête pense seule, elle devient folle.

  9. #9
    Membre à l'essai
    Inscrit en
    Juin 2009
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 11
    Points : 11
    Points
    11
    Par défaut
    Salut,

    Ce qu'on desire faire c avoir plusieurs onglets qui seront tous closable.

    Lorsqu'on ferme tous les onglets on se retrouve avec des erreur js ds la console sous FF :
    - this.domNode is null
    - this.scroller is undefined

    Que l'on passer par xhrGet ou par un simple : dijit.byId("monOnglet").attr("href",...).

    Le probleme viens du fait que le tabContainer n'a plus de child.

    Voici un bout de code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
     
        var container = dijit.byId("container"); 
     
         if (dijit.byId("monOnglet")) {
             dijit.byId("monOnglet").destroy();
         }         
         var cp1 = new dijit.layout.ContentPane({
                 id :"monOnglet",
                 title: 'nomGroup',
                 closable :true,
                 onClose: function(){
                     return confirm("Etes-vous certain de vouloir fermer cette onglet  ?");
                 }
         });
         container.addChild(cp1);
         container.startup();
         dijit.byId("monOnglet").attr("href",...);
         dijit.byId("monOnglet").attr("preload",true);
    Lorsqu'on ferme l'onget, on se retrouve avec les erreurs ds la console d'erreur et lorqu'on rappel la fction pr reafficher un onglet on a l'erreur this.edit is undefined.

  10. #10
    Expert confirmé
    Avatar de emmanuel.remy
    Inscrit en
    Novembre 2005
    Messages
    2 855
    Détails du profil
    Informations personnelles :
    Âge : 55

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 855
    Points : 4 045
    Points
    4 045
    Par défaut
    Salut,

    Faites moi un zip du code pour que je teste, car je n'ai pas du tout cette erreur: Quand on ferme tous les onglets, rien de particulier se passe

    ERE
    Quand une tête pense seule, elle devient folle.

  11. #11
    Membre à l'essai
    Inscrit en
    Juin 2009
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 11
    Points : 11
    Points
    11
    Par défaut
    Salut,

    J'ai enfin compris d'ou venait le probleme.

    Le contenu de la page qu'on appel en href contient un grid et un menu créé avec les widgets dojo.
    C'est la presence de ces widgets qui provoque les deux erreurs.

    Maintenant qu'on sais d'ou viens le probleme reste a savoir comment le regler ....


    ++

  12. #12
    Expert confirmé
    Avatar de emmanuel.remy
    Inscrit en
    Novembre 2005
    Messages
    2 855
    Détails du profil
    Informations personnelles :
    Âge : 55

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 855
    Points : 4 045
    Points
    4 045
    Par défaut
    Dans ces conditions peu évidentes , je ne vois pas d'autre solution que de tracer, en commençant par voir de que domNode il s'agit.

    Et si cela ne fonctionne toujours pas, alors il reste la possibilité de recharger la page ...

    ERE
    Quand une tête pense seule, elle devient folle.

  13. #13
    Membre à l'essai
    Inscrit en
    Juin 2009
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 11
    Points : 11
    Points
    11
    Par défaut La source du problème
    Salut,

    Après quelques recherches, on a constaté que le problème venait de dojox.widget.PlaceholderMenuItem.
    En effet on a utilisé ce widget pour avoir un menu lors du clic droit sur le grid.
    Lorsqu'on désactive ce widget plus de problème.
    Donc pour le moment on l'a désactivé. On voit vraiment pas prq ce widget déclenche ce problème.
    Si vous avez une idée ... on est preneur.

    ++

  14. #14
    Expert confirmé
    Avatar de emmanuel.remy
    Inscrit en
    Novembre 2005
    Messages
    2 855
    Détails du profil
    Informations personnelles :
    Âge : 55

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 855
    Points : 4 045
    Points
    4 045
    Par défaut
    Salut,
    Citation Envoyé par jamilla Voir le message
    Salut,

    Après quelques recherches, on a constaté que le problème venait de dojox.widget.PlaceholderMenuItem.
    En effet on a utilisé ce widget pour avoir un menu lors du clic droit sur le grid.
    Lorsqu'on désactive ce widget plus de problème.
    Donc pour le moment on l'a désactivé. On voit vraiment pas prq ce widget déclenche ce problème.
    Si vous avez une idée ... on est preneur.

    ++
    Vous l'avez utilisé pour afficher la liste des colonnes ?

    ERE
    Quand une tête pense seule, elle devient folle.

  15. #15
    Membre à l'essai
    Inscrit en
    Juin 2009
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 11
    Points : 11
    Points
    11
    Par défaut
    Effectivement, c pour permettre d'effectuer un choix sur les colonnes à afficher.

    On a créé notre propre bouton pr faire çà pour ne plus avoir a utiliser ce widget.
    Mais pr notre culture perso ;p , on voulait savoir prq çà provoqué ce problème ;p

  16. #16
    Expert confirmé
    Avatar de emmanuel.remy
    Inscrit en
    Novembre 2005
    Messages
    2 855
    Détails du profil
    Informations personnelles :
    Âge : 55

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 855
    Points : 4 045
    Points
    4 045
    Par défaut
    Re,

    La Grid fait un lien vers le menu header et le placeholder.
    J'imagine qu'il y a un souci dans l'ORDRE de destruction des ressources, en bref dans la séquence des fonctions destroy() appelées.

    Même si le code de destruction du menu apparait bien dans le destroy de la grid, sûrement est ce un problème événementiel. Il pourrait être intéressant de faire un test en détruisant d'abord la grille manuellement (via sa méthode destroy) avant de fermer l'onglet en cliquant dessus.

    ERE
    Quand une tête pense seule, elle devient folle.

Discussions similaires

  1. Réponses: 1
    Dernier message: 30/01/2008, 17h04
  2. Réponses: 3
    Dernier message: 30/01/2008, 17h04
  3. Ajax TabContainer le cadre BUG sous FireFox ?
    Par gregcat dans le forum ASP.NET
    Réponses: 2
    Dernier message: 08/10/2007, 15h17
  4. [AJAX] Unknown server tag 'ajaxToolkit:TabContainer'.
    Par solawe dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 24/08/2007, 17h59
  5. [Ajax Control] problème avec Tabcontainer
    Par Dude1205 dans le forum VB.NET
    Réponses: 1
    Dernier message: 14/08/2007, 15h52

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo