désactiver la pagination si il n'y a qu'une seule page dans les tables de données
Je suis la mise en œuvre de datatbales et conformément à ma demande, la plupart des choses ont été résolues à l'exception de la pagination question. Dans mon cas, à chaque fois que la pagination de la navigation de l'affichage. Je veux désactiver la pagination de navigation si il n'y a qu'une seule page à tous.Comment faire? Mon code est comme:
JS
<script>
function fnFilterColumn(i) {
$('#example').dataTable().fnFilter(
$("#col" + (i + 1) + "_filter").val(),
i
);
}
$(document).ready(function() {
$('#example').dataTable({
"bProcessing": true,
"sAjaxSource": "datatable-interestdb.php",
"bJQueryUI": true,
"sPaginationType": "full_numbers",
"sDom": 'T<"clear">lfrtip',
"oTableTools": {
"aButtons": [
{
"sExtends": "csv",
"sButtonText": "Save to CSV"
}
]
},
"oLanguage": {
"sSearch": "Search all columns:"
}
});
$("#example").dataTable().columnFilter({
aoColumns: [
null,
null,
null,
null
]
});
$("#col1_filter").keyup(function() {
fnFilterColumn(0);
});
});
</script>
HTML
<table cellpadding="3" cellspacing="0" border="0" class="display userTable" aria-describedby="example_info">
<tbody>
<tr id="filter_col1">
<td>Interest:</td>
<td>
<input type="text" name="col1_filter" id="col1_filter">
</td>
</tr>
</tbody>
</table>
<table width="100%" border="0" align="center" cellpadding="2" cellspacing="1" class="form_table display" id="example">
<thead>
<tr>
<th class="sorting_asc" width="25%">Interest</th>
<th width="25%">Name</th>
<th width="25%">Email</th>
<th width="25%">Contact No</th>
</tr>
</thead>
<tbody>
<tr>
<td colspan="4" class="dataTables_empty">Loading data from server</td>
</tr>
</tbody>
<tfoot>
<tr>
<th></th>
<th></th>
<th></th>
<th></th>
</tr>
</tfoot>
</table>
- Ne voulez-vous de les désactiver (developer.mozilla.org/en-US/docs/Mozilla/Tech/XUL/Attribute/...) les boutons de pagination, ou de les cacher? Toutes les réponses ci-dessous cacher/montrer.
Vous devez vous connecter pour publier un commentaire.
Vous devez vous cacher de façon dynamique, je pense, vous pouvez utiliser
fnDrawCallback()
MODIFIER - un autre moyen constaté ici pourrait être
Construction de Nicola réponse, vous pouvez utiliser le fnDrawCallback() rappel et la oSettings objet à masquer la table de pagination après avoir été tiré. Avec oSettings, vous n'avez pas besoin de savoir quelque chose au sujet des paramètres de la table (enregistrements par page, sélecteurs spécifiques à la table, etc.)
Les vérifications suivantes pour voir si la page d'affichage de la longueur est supérieure au nombre total d'enregistrements et masque la pagination si elle est:
Documentation
|| oSettings._iDisplayLength == -1
à votreif
de la clause. Ainsi, vous pouvez utiliser l'option 'toutes' dans lengthmenu et là, vous n'avez pas besoin de la pagination. Et comme @OMG dit, leelse
partie... Voir aussi mes version améliorée.Voir ma fonction plugin conditionalPaging.
Utilisation:
C'est la bonne approche pour travailler dans V1.10+ de JQuery Datatables. Le processus est généralement la même que dans les versions précédentes, mais les noms d'événements et méthodes de l'API sont légèrement différentes:
Documentation
fnDrawCallback
etcss("display", "none")
cette solution a fonctionné pour moi aussi lors de la modification de la taille de la page ou de filtrage. Je ne sais pas pourquoi, mais je suppose que c'est dû à l'événement à ne pas être licencié.À l'aide de @sina suggestion ci-dessus, y compris le correctif mentionné par @GuiSim.
Ajouter ce code à votre datatables initialisation de la demande.
JQUERY
Ou, mieux encore, de remplacer
dans votre datatables.js pour appliquer le code à l'échelle du site.
Je préfère @sina solution. Du bon travail.
Mais mon one est livré avec quelques améliorations nécessaires.
@sina oublié le
else
partie pour montrer que la pagination à nouveau si nécessaire. Et j'ai ajouté la possibilité de définir lesall
option dans lelengthMenu
comme suit:jQuery
- J'ai essayé avec les options suivantes, il a travaillé pour moi
DataTable Vue De Sortie
Cette fonction de rappel fonctionne de manière générique avec tout datatable sans avoir à coder en dur la table ID:
Je suis en train de faire la suite pour atteindre cet objectif, car il est plus dynamique, solution qui n'est pas exprimée ci-dessus. comme le premier, il est d'obtenir le nombre total de pages et de décider ensuite pour afficher/masquer la pagination.
La beauté de ce code est uniquement si l'utilisateur change de page longueur, alors il ne sera pas effectuée.
Il suffit d'ajouter les lignes suivantes à votre feuille de style:
Vous pouvez suivre cette voie également.
Cela a fonctionné pour moi.
J'ai essayé de faire sPaginationType Dynamique dans la datatable pour chaque entrée, mais je ne trouve pas la bonne solution, mais ce que j'ai fait était
Ce n'est pas directement possible que les tables de données ne prend pas en charge l'activation et la désactivation des fonctionnalités sont les temps d'exécution. Cependant, ce que vous pourriez faire est de faire usage de la fnDrawCallback() la fonction de vérifier pour voir si il n'y a qu'une seule page, et si oui, de masquer les contrôles de pagination.
Si vos données n'est pas dynamique, c'est à dire, le serveur génère du code HTML de table qui est ensuite renforcée par les tables de données vous pouvez afficher la pagination de l'option sur le serveur (je suis à l'aide de rasoir).
Je sais que c'est un vieux post, mais pour ceux d'entre nous qui seront en utilisant cela, et ont des TOC, comme moi, le changement est nécessaire.
Changement de l'instruction if,
à
Avec ce petit changement, vous verrez les boutons de pagination pour les enregistrements des longueurs de plus de 10, 25, 50, 100 au lieu de présenter les boutons de pagination avec seulement 10 enregistrements, techniquement, 10, 25, etc enregistrements est encore une vue de la page.
Voici ma solution, ça fonctionne aussi si vous avez plusieurs tables sur la même page. Il empêche la colision par exemple (tableau doit avoir la pagination, et B ne doit pas).
tableId dans mon code n'est jamais défini. Si vous n'avez pas défini un ID pour votre table, dataTable va le faire pour vous en ajoutant quelque chose comme "DataTables_Table_0'
Cela a Résolu mes problèmes:
Espère que cela vous aide tous les