160 votes

désactiver le tri d'une colonne à l'aide de datatables de jquery

J'utilise datatables de jquery pour trier les champs de la table. ma question est de savoir comment désactiver une colonne particulière sans trier. j'ai essayé avec le code suivant, mais j'ai obtenu le résultat escompté.

"aoColumns": [
    { "bSearchable": false },
    null
]   

J'ai également essayé avec le code suivant

"aoColumnDefs": [
     { "bSearchable": false, "aTargets": [ 1 ] }
 ]

mais le résultat n'est pas accepté .s'il vous plaît dites-moi toute idée

usman

1 votes

J'ai édité ma réponse, avec une option où vous pouvez définir les colonnes désactivées dans votre définition TH.

0 votes

Désactivez le bouton à l'aide de css. Consultez cette page. datatables.net/forums/discussion/21164/

0 votes

Vous pouvez aussi regarder cbabhusal.wordpress.com/2015/05/20/

177voto

wildehahn Points 1026

C'est ce que vous cherchez :

$('#example').dataTable( {
      "aoColumnDefs": [
          { 'bSortable': false, 'aTargets': [ 1 ] }
       ]
});

3 votes

Ça a marché pour moi. Si vous voulez trier la première colonne, 'aTargets' : [ -1 ], pour la deuxième 'aTargets' : [ 1 ], pour la troisième 'aTargets' : [ 2 ] et ainsi de suite.

5 votes

Vous pouvez simplement faire 'aTargets' : [ 1, 2 ]

2 votes

@Lasang - Voulez-vous vraiment dire [-1] alors [1] , [2] etc ? Que fait le -1 C'est-à-dire ? L'indexation des colonnes ne commence-t-elle pas à 1 pour les dataTables ?

64voto

Paulraj Points 1785

Pour rendre le tri de la première colonne inopérant, essayez avec le code ci-dessous dans datatables jquery. Le null représente ici l'activation du tri.

$('#example').dataTable( {
  "aoColumns": [
  { "bSortable": false },
  null,
  null,
  null
  ]
} );

Désactiver le tri sur une colonne dans les tables de données jQuery

0 votes

@Paulraj Le lien est cassé, pourriez-vous le changer ?

1 votes

À partir de DataTables 1.10.5, il est désormais possible de définir des options d'initialisation à l'aide des attributs data-* de HTML5. Voir stackoverflow.com/a/32281113/1430996

61voto

Paulo Fidalgo Points 5207

En utilisant Datatables 1.9.4, j'ai désactivé le tri de la première colonne avec ce code :

/* Table initialisation */
$(document).ready(function() {
    $('#rules').dataTable({
        "sDom" : "<'row'<'span6'l><'span6'f>r>t<'row'<'span6'i><'span6'p>>",
        "sPaginationType" : "bootstrap",
        "oLanguage" : {
            "sLengthMenu" : "_MENU_ records per page"
        },
        // Disable sorting on the first column
        "aoColumnDefs" : [ {
            'bSortable' : false,
            'aTargets' : [ 0 ]
        } ]
    });
});

EDIT :

Vous pouvez même les désactiver en utilisant l'option no-sort sur votre <th> ,

et utiliser ce code d'initialisation :

// Disable sorting on the no-sort class
"aoColumnDefs" : [ {
    "bSortable" : false,
    "aTargets" : [ "no-sort" ]
} ]

EDIT 2

Dans cet exemple, j'utilise Datables avec Bootstrap, en suivant un ancien article de blog. Maintenant il y a un lien avec du matériel mis à jour sur stylisation des tables de données avec bootstrap .

0 votes

@larrylampco J'ai mis à jour le post avec les liens actualisés.

0 votes

Merci, mais qu'en est-il de la perte de css lorsque nous appliquons le triage ?

1 votes

À partir de DataTables 1.10.5, il est désormais possible de définir des options d'initialisation à l'aide des attributs data-* de HTML5. See stackoverflow.com/a/32281113/1430996

27voto

Bhavesh Points 578

Ce que j'utilise, c'est d'ajouter un attribut personnalisé dans le td du tableau et de contrôler le tri en vérifiant automatiquement la valeur de cet attribut.

Le code HTML sera donc

<table class="datatables" cellspacing="0px" >

    <thead>
        <tr>
            <td data-bSortable="true">Requirements</td>
            <td>Test Cases</td>
            <td data-bSortable="true">Automated</td>
            <td>Created On</td>
            <td>Automated Status</td>
            <td>Tags</td>
            <td>Action</td>
        </tr>
    </thead>
    <tbody>
        <tr>
            <td>

Et le JavaScript pour initialiser les tables de données sera (il obtiendra dynamiquement les informations de tri de la table elle-même ;)

$('.datatables').each(function(){
    var bFilter = true;
    if($(this).hasClass('nofilter')){
        bFilter = false;
    }
    var columnSort = new Array; 
    $(this).find('thead tr td').each(function(){
        if($(this).attr('data-bSortable') == 'true') {
            columnSort.push({ "bSortable": true });
        } else {
            columnSort.push({ "bSortable": false });
        }
    });
    $(this).dataTable({
        "sPaginationType": "full_numbers",
        "bFilter": bFilter,
        "fnDrawCallback": function( oSettings ) {
        },
        "aoColumns": columnSort
    });
});

3 votes

Vous devez utiliser data-bSortable au lieu de bSortable . bSortable n'est pas un attribut HTML valide.

0 votes

À partir de DataTables 1.10.5, il est désormais possible de définir des options d'initialisation à l'aide des attributs data-* de HTML5. See stackoverflow.com/a/32281113/1430996

6voto

abhinav Points 31

$("#exemple").dataTable( {"aoColumnDefs" : [{ "bSortable" : false, "aTargets" : [ 0,1,2,3,4,5 ] }] } ) ;

0 votes

La réponse de Bhavesh est intelligente, mais exagérée. Pour désactiver le tri, il suffit d'utiliser la réponse d'abhinav. En désactivant le tri sur la première colonne, ajoutez une cible de colonne dans l'option aoColumnDefs : "bSortable": false, "aTargets": [0]

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X