jQuery datatables masquer la colonne

Existe-t-il un moyen avec le plugin jquery datatables de masquer (et afficher) une colonne de table?

J'ai compris comment recharger les données de la table: en utilisant fnClearTable et fnAddData.

Mais mon problème est que dans l'une de mes vues pour la table (par exemple un mode caché) Je ne veux pas montrer certaines colonnes.

54
demandé sur john 2011-04-13 23:37:40

12 réponses

Vous pouvez masquer les colonnes par cette commande:

fnSetColumnVis( 1, false );

Où le premier paramètre est l'index de la colonne et le second paramètre est la visibilité.

Via: http://www.datatables.net/api fonction fnSetColumnVis

55
répondu Damb 2011-04-13 19:42:13

Si quelqu'un revient ici, cela a fonctionné pour moi...

"aoColumnDefs": [{ "bVisible": false, "aTargets": [0] }]
48
répondu ahaliav fox 2012-05-13 11:17:03

Vous pouvez le définir lors de l'initialisation datatable

"aoColumns": [{"bVisible": false},null,null,null]
25
répondu Pankaj Patel 2012-01-06 21:08:29

Masquer les colonnes dynamiquement

Les réponses précédentes utilisent la syntaxe héritée DataTables. Dans v 1.10+, vous pouvez utiliser colonne().visible():

var dt = $('#example').DataTable();
//hide the first column
dt.column(0).visible(false);

Pour masquer plusieurs colonnes, colonnes().visible () peut être utilisé:

var dt = $('#example').DataTable();
//hide the second and third columns
dt.columns([1,2]).visible(false);

Voici une démo de violon .

Masquer les colonnes lorsque la table est initialisée

Pour masquer les colonnes lorsque la table est initialisée, vous pouvez utiliser l'option columns :

$('#example').DataTable( {
    'columns' : [
        null,
        //hide the second column
        {'visible' : false },
        null,
        //hide the fourth column
        {'visible' : false }
    ]
});

Pour la méthode ci-dessus, vous devez spécifier null pour les colonnes qui doivent rester visibles et ne pas avoir d'autres options de colonne spécifiées. Vous pouvez également utiliser columnDefs pour cibler une colonne spécifique:

$('#example').DataTable( {
    'columnDefs' : [
        //hide the second & fourth column
        { 'visible': false, 'targets': [1,3] }
    ]
});
21
répondu devlin carnate 2016-07-27 21:29:16

Pour toute personne utilisant le traitement côté serveur et passant des valeurs de base de données dans jQuery en utilisant une colonne cachée, je suggère" sClass " param. Vous pourrez utiliser CSS display: none pour masquer la colonne tout en pouvant récupérer sa valeur.

Css:

th.dpass, td.dpass {display: none;}

Dans les tables de données init:

"aoColumnDefs": [ { "sClass": "dpass", "aTargets": [ 0 ] } ] // first column in visible columns array gets class "dpass"

/ / EDIT: n'oubliez pas d'ajouter également votre classe cachée à votre cellule thead

15
répondu DrewT 2013-05-21 22:01:19

Vous pouvez essayer comme ci-dessous pour masquer / afficher dynamiquement l'exécution

Masquer : fnSetColumnVis (1, false, false );

Exemple: oTable.fnSetColumnVis(item, false, false);

Afficher : fnSetColumnVis (1, vrai, faux );

Exemple: oTable.fnSetColumnVis(item, false, false);

Ici, oTable est l'objet de Datatable.

2
répondu Nimesh 2015-07-09 10:08:14

Avec l'api, vous pouvez utiliser

var table = $('#example').DataTable();

table.column( 0 ).visible( false );

Regardez cette info:

Entrez description du lien ici

0
répondu goero_ag 2017-07-13 06:59:42

Remarque: la solution acceptée est maintenant obsolète et fait partie du code hérité. http://legacy.datatables.net/ref Les solutions pourraient ne pas être appropriées pour ceux qui travaillent avec les nouvelles versions de DataTables (son héritage maintenant) Pour la nouvelle solution: vous pouvez utiliser: https://datatables.net/reference/api/columns (). visible()

Alternatives vous pouvez implémenter un bouton: https://datatables.net/extensions/buttons/built-in regardez la dernière option, sous le lien fourni qui permet d'avoir un bouton qui pourrait basculer la colonne visibilité.

0
répondu Bhaulik 2017-10-26 15:06:53

Espère que cela va vous aider. J'utilise cette solution pour la recherche sur certaines colonnes mais je ne veux pas les afficher sur frontend.

$(document).ready(function() {
        $('#example').dataTable({
            "scrollY": "500px",
            "scrollCollapse": true,
            "scrollX": false,
            "bPaginate": false,
            "columnDefs": [
                { 
                    "width": "30px", 
                    "targets": 0,
                },
                { 
                    "width": "100px", 
                    "targets": 1,
                },
                { 
                    "width": "100px", 
                    "targets": 2,
                },              
                { 
                    "width": "76px",
                    "targets": 5, 
                },
                { 
                    "width": "80px", 
                    "targets": 6,
                },
                {
                    "targets": [ 7 ],
                    "visible": false,
                    "searchable": true
                },
                {
                    "targets": [ 8 ],
                    "visible": false,
                    "searchable": true
                },
                {
                    "targets": [ 9 ],
                    "visible": false,
                    "searchable": true
                },
              ]
        });
    });
0
répondu Abo Baker 2018-09-25 12:01:22

Si vous utilisez des données de json et utilisez Datatable v 1.10.19 , vous pouvez le faire:

Plus d'Informations

$(document).ready(function() {
     $('#example').dataTable( {

        columns= [
          { 
           "data": "name_data",
           "visible": false
           }
        ]
  });
});
0
répondu Alex Montoya 2018-09-26 17:21:33
$(document).ready(function() {
$('#example').DataTable( {
    "columnDefs": [
        {
            "targets": [ 2 ],
            "visible": false,
            "searchable": false
        },
        {
            "targets": [ 3 ],
            "visible": false
        }
    ]
});});
-1
répondu Vishnu S Babu 2016-11-10 10:18:02

Regardez ma solution

J'ai ce HTML table Head

<thead>
    <tr>
        <th style="width: 20%">@L("Id")</th>
        <th style="width: 20%">@L("IdentityNumber")</th>
        <th style="width: 20%">@L("Name")</th>
        <th style="width: 20%">@L("MobileNumber")</th>
        <th style="width: 20%">@L("RegistrationStatus")</th>
        <th style="width: 20%">@L("RegistrationStatusId")</th>
        <th style="width: 20%; text-align: center;" data-hide="phone">@L("Actions")</th>
    </tr>
</thead>

Et mon Ajax request a retourné quelque chose comme ceci

entrez la description de l'image ici

Donc je veux cacher l'index Id [0] et L'index RegistrationStatusId [5]

$(document).ready(function() {
    $('#example').dataTable( {
        "columnDefs": [
            { "aTargets": [0, 5], "sClass": "invisible"},// here is the tricky part
        ]
    });
});

J'espère que cela vous aidera

-2
répondu Basheer AL-MOMANI 2016-12-11 10:32:58