2010-10-29 29 views
0

Je travaille sur une application Web qui utilise les menus (fg.menu) et les onglets de l'interface utilisateur jQuery. Cela fonctionne très bien. J'essaie maintenant d'appliquer le plugin dataTables aux tables que je charge (via Ajax) dans mes onglets. Les tables sont générées côté serveur (JSON n'est pas une option pour l'instant) et sont installées dans des fichiers statiques que je charge dans les onglets. Les tables ont des liens hypertextes vers d'autres tables. Ceux-ci se chargés dans l'onglet en cours via cet événement de manipulation dans mes options de l'onglet:Problème de rendu de jQuery dataTables bizarre

load: function(event, ui) 
{ 
    //alert ("load is called"); 

    $('a', ui.panel).live('click', function() 
    {  
     // now load the href into the tab 
     $(ui.panel).load(this.href); 
     // alert ("live click is called"); 

     // Set up the dataTable 
     oTable = $('.my_table').dataTable( 
     { 
     "sScrollX": "100%", 
     "bPaginate": false, 
     "bJQueryUI": true, 
     "bInfo": false, 
     "bDestroy": true, 
     "bRetrieve": true, 
     "sDom": '<"H"r>t' 
     }); 

    return false; 
    }); 

} // end of load: 

J'initialise aussi les datatables via le lien de menu chargeur (a un événement différent), qui fonctionne très bien, tout comme un onglet initial sélectionnez le rendu.

Lorsque je clique sur les liens de la table, la sous-table s'affiche dans l'onglet, mais la table de données ne prend pas effet. J'ai remarqué que lorsque je cliquais sur un nouvel onglet, la table clignotait brièvement le rendu dataTable avant que le nouvel onglet soit chargé. Donc, j'ai ajouté l'alerte (commentée dans le code ci-dessus) pour voir comment les événements étaient en train de se déclencher et voilà, les tables de données ont commencé à fonctionner correctement. Lorsque je supprime l'alerte, elle revient à la table normale.

J'ai essayé de déplacer le dataTable init partout où je peux penser, en appelant explicitement fnDraw() à divers endroits, et en répliquant le dataTable init partout, mais rien ne semble le rendre sauf l'alerte. J'utilise dataTables 1.7.3, jQuery 1.4.2 et jQuery UI 1.8.5 dans Firefox 3.6.12.

Je suppose qu'il s'agit d'une sorte de problème d'événement, mais je ne suis pas au courant de quoi que ce soit d'alerte qui forcerait le rendu de dataTables à se produire. Des idées? Est-ce que je manque quelque chose d'une stupide évidence? :-)

Répondre

0

D'accord, je semble avoir trouvé une solution de contournement. J'avais d'abord essayé de faire l'init de dataTable dans chacun de mes fichiers html qui contenaient les fragments de table. Cela n'a pas fonctionné quand je l'ai essayé pour la première fois, mais quand je l'ai essayé à nouveau, ça a marché (je ne sais pas pourquoi, mais je vais le prendre quand même.) Ce problème/rendu me dérange toujours, mais au moins Pour cela, il faut se préoccuper de cette application: Prochain: le bouton Précédent permet de suivre plus que les onglets, mais les liens de contenu à l'intérieur des onglets :-)