J'utilise le jQuery DataTables plugin.
Est-il possible de supprimer les petites flèches affichées dans les en-têtes pour indiquer les options de tri? Je souhaite conserver la fonctionnalité voulant qu'en cliquant sur un en-tête trié dans cette colonne, je ne souhaite tout simplement pas afficher les icônes de flèche car elles modifient la présentation de mes en-têtes de colonne.
Firebug montre mes en-têtes comme suit:
<th class="sorting" role="columnheader" tabindex="0" aria-controls="myTable" rowspan="1" colspan="1" style="width: 151px;" aria-label="Category: activate to sort column ascending">Category</th>
Les icônes sont définies en tant que background : url(..)
sur les classes CSS. Désactivez-les en:
.sorting, .sorting_asc, .sorting_desc {
background : none;
}
voir jsfiddle -> http://jsfiddle.net/5V2Dx/ Remarque: cette solution concerne les fichiers de données 1.9.x !!
Mettre à jour. Lors de l'utilisation de datatables 1.10.x, le CSS pour réinitialiser les icônes d'en-tête est un peu différent:
table.dataTable thead .sorting,
table.dataTable thead .sorting_asc,
table.dataTable thead .sorting_desc {
background : none;
}
voir -> http://jsfiddle.net/kqpv3ub9/ (la démo mise à jour utilise dataTables 1.10.11)
Aucune des solutions présentées n'a fonctionné pour moi. Mais je viens de trouver celui-ci;
.dataTable > thead > tr > th[class*="sort"]:after{
content: "" !important;
}
PS .: DataTables version "datatables": "~1.10.2"
Vous pouvez utiliser les propriétés datatable comme ci-dessous, cela cachera l'icône de tri Des colonnes datatable:
"targets": 'no-sort',
"bSort": false,
"order": []
Pour la nouvelle version de DataTables:
<style>
.dataTable > thead > tr > th[class*="sort"]::after{display: none}
</style>
Certaines classes sont associées aux flèches. Vous pouvez utiliser les CSS suivantes pour masquer ces éléments.
table.dataTable thead .sorting:after,
table.dataTable thead .sorting_asc:after,
table.dataTable thead .sorting_desc:after {
display: none;
}
Astuce rapide (cela va cacher un bouton de tri, mais la fonction fonctionne toujours): - Créer CSS:
.no-sort::after { display: none!important; }
.no-sort { pointer-events: none!important; cursor: default!important; }
<th class="no-sort">Heading</th>
Quoi qu'il en soit, voici une longue réponse, vous pouvez utiliser ce morceau de code pour désactiver la fonction de tri de la colonne particulière (base-idx: 0), AUSSI COMME supprimer un bouton de tri:
$('#example').dataTable( {
"columnDefs": [
{ "orderable": false, "targets": 0 }
]
} );
Mais cela ne fonctionnera pas parfaitement si vous définissez orderable sur false dans la première colonne. La fonction de tri s'arrête mais le bouton est toujours là. Parce que, par défaut, la première colonne a été définie sur ordre croissant ('ordre': [[0, 'asc']). Pour désactiver cette valeur par défaut "ennuyeuse", ajoutez une option supplémentaire: "commande":
$('#example').dataTable( {
"columnDefs": [
{ "orderable": false, "targets": 0 }
],
"order": [], // not set any order rule for any column.
});
C'est ce qui a fonctionné pour moi
.dataTable > thead > tr > th[class*=sort]:after{
display:none;
}
Utilisation de CSS:
.DataTables_sort_icon { display:none;}
(Depuis DataTables 1.10) Si vous n'en avez pas besoin, la désactivation de la commande est un moyen d'empêcher l'affichage des contrôles de flèche. Faites ceci lors de l'initialisation de la table en spécifiant l'option "ordering" comme false.
Exemple:
$("#example").DataTable({
"ordering": false
});
Activer ou désactiver l'ordre des colonnes - c'est aussi simple que cela!
Avertissement: pas de tri du tout.
Une autre solution consiste à désactiver le classement dans toutes les colonnes. Ensuite, vous pouvez définir un ordre par programme avec les les flèches de contrôle ne s'affichant que sur les colonnes triées}:
var after = $('#after').DataTable({
"order": [[1,"asc"]], // sorting 2nd column
"columnDefs": [
{ "orderable": false, "targets": "_all" } // Applies the option to all columns
]
});
Sur la dernière version de datatables/CDN, c'est encore différent
table.dataTable thead .sorting:after
{
display: none;
}
Cache les filtres.
Cordialement
Exemple:
<display:column property="......" title="......" sortable="true"/>
Cela rendra la colonne triable sans afficher les flèches.
Tout cela semble un peu compliqué, pourquoi ne pas utiliser l'attribut data-sortable="false"
sur la balise <th>
et ensuite simplement faire un removeAttribute("class");
dans JS avec un déclencheur click
?
Cela a fonctionné pour moi.
#sample_1>thead>tr>th.sorting, #sample_1>thead>tr>th.sorting_asc, #sample_1>thead>tr>th.sorting_desc {
background : none;
}
#sample_1>thead>tr>th.sorting:after, #sample_1>thead>tr>th.sorting_asc:after, #sample_1>thead>tr>th.sorting_desc::after {
content: none;
}
Dans mon cas, cela a bien fonctionné.
.sorting:after,
.sorting_asc:after,
.sorting_desc:after{
content: "";
background: none !important;
}
Ajouter ce style à votre page
table.dataTable thead .sorting::after {
opacity: 0.2;
content: "";
}
Mettez ci-dessous CSS. Cela ne masquera que l'icône, mais le tri fonctionnera.
table.dataTable thead .sorting,
table.dataTable thead .sorting_asc,
table.dataTable thead .sorting_desc,
table.dataTable thead .sorting_asc_disabled,
table.dataTable thead .sorting_desc_disabled {
background-image: none!important;
}
$('#sample_1 thead tr th:first-child').removeClass('sorting');
Cela vous permettra de changer les icônes de tri par défaut pour les icônes personnalisées, que j'ai dérivées de l'article d'Irshad ci-dessus et de Suschil de ici . Cela était dû aux navigateurs dont le rendu des polices était désactivé, ce qui était hors de notre contrôle.
.dataTable > thead > tr > th[class*="sort"]::after{display: none}
table.dataTable thead .sorting { background: url('/Content/images/sort-both.png') no-repeat center right; }
table.dataTable thead .sorting_asc { background: url('/Content/images/sort-asc-list.png') no-repeat center right; }
table.tabledataTable thead .sorting_desc { background: url('/Content/images/sort-desc-list.png') no-repeat center right; }
Il existe une autre solution pour masquer les icônes de tri d’une colonne, Appliquer une classe css à l’en-tête,
<th class="sorting_disabled"></th>
et définir la classe css dans le style
.sorting_disabled
{
background-image:none !important;
}
Cette solution a fonctionné et a été testée pour la version 1.10+ datatable jquery
Pour DataTables 1.10.7 une petite variante pour le style davidkonrad css:
table.dataTable thead th.sorting,
table.dataTable thead th.sorting_asc,
table.dataTable thead th.sorting_desc {
background : none;
}
Inclure le "th" élément.