首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在jquery DataTable中启用columnDefs

如何在jquery DataTable中启用columnDefs
EN

Stack Overflow用户
提问于 2015-12-01 03:32:08
回答 2查看 2.6K关注 0票数 2

我在这个链接中使用Datatable来显示一个网格。https://datatables.net/examples/basic_init/hidden_columns.html

我使用(columnDefs.targets)显示成对的默认列,然后我添加了在此链接中显示和隐藏列的功能:

https://datatables.net/examples/api/show_hide.html

首先我加载的页面是正确的,并显示默认的列,当我尝试显示/隐藏时,它显示所有的列而不是默认的一列,我不确定如何只显示默认的一列。

这是我的代码:

代码语言:javascript
复制
    $(document).ready(function () {

      var table = $('#DataLegal').DataTable({


                "columnDefs": [
                    {
                        "targets": [ 4,5,6,7,8,9,10,14,15,16,17,18,19,20,21,22,23,24,25,26,27],
                        "visible": false
                       // "searchable": false
                    }

                ]
            } );


     //This is show/Hide part

        var ms = $('#magicsuggest').magicSuggest({
            // Converts our C# object in a JSON string.
            data: @Html.Raw(Newtonsoft.Json.JsonConvert.SerializeObject(columns))
        });


        $(ms).on('selectionchange', function(e,m){


            // Turn on columns
            $.each(table.columns()[0], function(index) {

              table.column(index).visible(true);
              //here how I can only turned on the DefColumns? 

            });




                    // Turn off each column in the value array... Value =     int[0,1, 2, ...]
                $.each(this.getValue(), function(index, item) {

                  table.column(item).visible(false);
                 });


           });

      });
EN

回答 2

Stack Overflow用户

发布于 2015-12-01 03:46:40

你有没有试过存储目标列表?

那么只更新每个函数中的列表吗?像这样的东西?

代码语言:javascript
复制
$(document).ready(function () {
    var targetArr = [4,5,6,7,8,9,10,14,15,16,17,18,19,20,21,22,23,24,25,26,27];
    var table = $('#DataLegal').DataTable({
            "columnDefs": [{
                 "targets": targetArr,
                 "visible": false
                 // "searchable": false
             }]
     });    

    $(ms).on('selectionchange', function(e,m){
        // Turn on columns
        $.each(table.columns()[0], function(index) {
            if($.inArray(item, targetArr)){
                table.column(item).visible(true); //in case some values were false set all to true
            } else {
                table.column(item).visible(false);//in case some values were true set all to false
            }
        });

        $.each(this.getValue(), function(index, item) {
            table.column(item).visible(false);
        });
    });
 });
票数 0
EN

Stack Overflow用户

发布于 2015-12-01 04:14:39

您可以通过table.init().columnDefs解压columnDefs设置,

代码语言:javascript
复制
table.init().columnDefs[0].targets

将返回上面的[ 4,5,6,7,8,9,10,14,15,16...]数组。创建包含隐藏列的值的显示/隐藏选择框的一种快捷方法是

代码语言:javascript
复制
show / hide column :<select id="columns"></select>

填充隐藏列

代码语言:javascript
复制
table.init().columnDefs[0].targets.forEach(function(column) {
    $("#columns").append('<option value="'+column+'">show / hide column #'+column+'</option>');
})  

当用户在选择框中选择列时显示/隐藏列

代码语言:javascript
复制
$("#columns").on('change', function() {
    table.column(this.value).visible(!table.column(this.value).visible())
})  

演示->

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34006473

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档