J'ai un problème pour contrôler la largeur d'une table à l'aide du plugin jQuery DataTables. Le tableau est censé représenter 100% de la largeur du conteneur, mais finit par être une largeur arbitraire, plutôt inférieure à la largeur du conteneur.
Suggestions appréciées
La déclaration de table ressemble à ceci
<table id="querytableDatasets" class="display" cellspacing="0"
cellpadding="3" width="100%">
Et le javascript
jQuery('#tab-datasets').load('/cgi-bin/qryDatasets', '', function (){
jQuery('#querytableDatasets').dataTable({
"bPaginate": false,
"bInfo": false,
"bFilter": false
});
}); `
En inspectant le HTML dans Firebug, vous voyez ceci (notez le style ajouté = "width: 0px;")
<table id="querytableDatasets" class="display" cellspacing="0"
cellpadding="3" width="100%" style="width: 0px;">
En regardant dans Firebug les styles, le style table.display a été remplacé. Je ne vois pas d'où ça vient
element.style {
width:0;}
-- dataTables.css (line 84
table.display {
margin:0 auto;
width:100%;
}
jquery
datatables
jquery-datatables
John Mac
la source
la source
max-width
propriété était définie. Apparemment, IE8 n'aime pas trop cette propriété et l'a ignorée par rapport aux tables de données, même si l'image était correctement dimensionnée à l'écran. Le changer pourwidth
résoudre le problème.Réponses:
Le problème est dû au fait que dataTable doit calculer sa largeur - mais lorsqu'il est utilisé dans un onglet, il n'est pas visible et ne peut donc pas calculer les largeurs. La solution consiste à appeler «fnAdjustColumnSizing» lorsque l'onglet s'affiche.
Préambule
Code d'initialisation
Voir ceci pour plus d'informations.
la source
window.resize
, regardez un exemple legacy.datatables.net/ref#fnAdjustColumnSizingVous voudrez modifier deux variables lorsque vous initialisez dataTables:
bAutoWidth
etaoColumns.sWidth
En supposant que vous ayez 4 colonnes avec des largeurs de 50px, 100, 120px et 30px, vous feriez:
Plus d'informations sur l'initialisation de dataTables peuvent être trouvées à http://datatables.net/usage
Surveillez l'interaction entre ce paramètre de widhts et le CSS que vous appliquez. Vous pouvez commenter votre CSS existant avant d'essayer ceci pour voir à quel point vous vous en approchez.
la source
la source
Eh bien, je ne suis pas familier avec ce plugin, mais pourriez-vous réinitialiser le style après avoir ajouté le datatable? Quelque chose comme
après l'appel .dataTable?
la source
J'ai eu de nombreux problèmes avec les largeurs de colonne des tables de données. La solution magique pour moi était d'inclure la ligne
ce css va avec le css global de la table. Par exemple, si vous avez déclaré les tables de données comme suit:
alors la ligne magique css irait dans la classe Loadtable
}
la source
La solution TokenMacGuys fonctionne mieux parce que c'est le résultat d'un bogue dans jQdataTable. Ce qui se passe, c'est que si vous utilisez $ ('# someabe'). DataTable (). FnDestroy (), la largeur de la table est définie sur 100px au lieu de 100%. Voici une solution rapide:
la source
Ajoutez cette classe css à votre page, cela résoudra le problème:
la source
La définition des largeurs explicitement en utilisant
sWidth
pour chaque colonne ETbAutoWidth: false
lors de l'dataTable
initialisation a résolu mon problème (similaire). J'adore la pile débordante.la source
Vous devez laisser au moins un champ sans champ fixe, par exemple:
Vous pouvez tout changer, mais n'en laissez qu'un comme nul, afin qu'il puisse s'étirer. Si vous mettez des largeurs sur TOUT, cela ne fonctionnera pas. J'espère que j'ai aidé quelqu'un aujourd'hui!
la source
Cela a bien fonctionné pour ajuster toute la largeur de la table. Merci @Peter Drinnan!
la source
Comme sur Datatable 10.1, c'est simple. Mettez simplement l'attribut width à votre tableau en HTML. ie width = "100%", cela remplacera tous les styles CSS définis par DT.
Voir ceci http://www.datatables.net/examples/basic_init/flexible_width.html
la source
Aucune des solutions ici n'a fonctionné pour moi. Même l'exemple sur la page d'accueil des tables de données n'a pas fonctionné, d'où l'initialisation de la table de données dans l'option show.
J'ai trouvé une solution au problème. L'astuce consiste à utiliser l'option activate pour les onglets et à appeler fnAdjustColumnSizing () sur la table visible :
la source
Juste pour dire que j'ai eu exactement le même problème que vous, même si j'appliquais juste JQuery à une table normale sans Ajax. Pour une raison quelconque, Firefox ne développe pas le tableau après l'avoir révélé. J'ai résolu le problème en plaçant la table dans un DIV et en appliquant les effets au DIV à la place.
la source
Faites-vous cela dans l'événement prêt?
Le dimensionnement dépendra probablement du chargement complet du document.
la source
Pour toute personne ayant des difficultés à ajuster la largeur de la table / cellule à l'aide du plugin d'en-tête fixe:
Les tables de données reposent sur les balises de tête pour les paramètres de largeur de colonne. C'est parce que c'est vraiment le seul html natif car la plupart des html internes de la table sont générés automatiquement.
Cependant, certaines de vos cellules peuvent être plus grandes que la largeur stockée à l'intérieur des cellules de tête.
C'est-à-dire que si votre table a beaucoup de colonnes (table large) et que vos lignes contiennent beaucoup de données, alors appeler "sWidth": changer la taille de cellule td ne fonctionnera pas correctement car les lignes enfants redimensionnent automatiquement les td en fonction du débordement content et cela se produit une fois que la table a été initialisée et passé ses paramètres init.
La thead originale "sWidth": les paramètres sont remplacés (rétrécis) parce que les tables de données pensent que votre table a toujours sa largeur par défaut de 100% - il ne reconnaît pas que certaines cellules sont débordées.
Pour résoudre ce problème, j'ai compris la largeur du débordement et je l'ai prise en compte en redimensionnant le tableau en conséquence après l'initialisation du tableau - pendant que nous y sommes, nous pouvons lancer notre en-tête fixe en même temps:
la source
créez votre en-tête fixe dans le "succès" de votre appel ajax, vous n'aurez aucun problème d'alignement dans l'en-tête et les lignes.
la source
J'espère que cela aide quelqu'un qui a encore du mal.
Ne gardez pas votre table dans un contenant. Faites du wrapper de la table votre conteneur après le rendu de la table. Je sais que cela peut être invalide aux endroits où vous avez autre chose avec le tableau, mais vous pouvez toujours ajouter ce contenu.
Pour moi, ce problème se pose si vous avez une barre latérale et un conteneur qui est en fait un décalage par rapport à cette barre latérale.
(J'ai ajouté un panneau par défaut)
Et votre classe:
la source
trouver un autre lien utile sur ce problème et cela a résolu mon problème.
Tableau de largeur de force des tables de données
la source
Je suis tombé sur un problème similaire lors d'un div enroulé autour de la table.
Ajout de la position: relative corrigée pour moi.
la source
J'ai eu un problème similaire où le contenu du tableau était plus grand que l'en-tête et le pied de page du tableau. L'ajout d'un div autour de la table et la configuration de x-overflow semblent avoir résolu ce problème:
la source
Assurez-vous que tous les autres paramètres avant bAutoWidth & aoColumns sont correctement entrés. Tout paramètre incorrect avant interrompra cette fonctionnalité.
la source
J'ai eu le même problème et j'ai trouvé que le texte dans les colonnes ne se cassait pas et l'utilisation de ce code css a résolu le problème
la source
C'est ma façon de faire.
la source
Je rencontre le même problème aujourd'hui.
J'ai utilisé un moyen délicat de le résoudre.
Mon code comme ci-dessous.
la source
Vérifiez également cette solution. cela a résolu facilement mon problème de largeur de colonne DataTable
JQuery DataTables 1.10.20 introduit une
columns.adjust()
méthode qui corrige le problème de l'onglet bascule BootstrapVeuillez consulter la documentation: Onglets Scrolling et Bootstrap
la source
Cela fonctionne très bien.
la source