【问题标题】:What is the right format to change Datatables column using array?使用数组更改 Datatables 列的正确格式是什么?
【发布时间】:2014-02-12 14:23:36
【问题描述】:

我正在尝试在初始化表格后更改我的数据表的列号:

其中 retitle 是一个数组(即长度为 4 的数组),c 是 retitle 的长度(即 c=4),这是之前定义的。

   var atarget = [];
   var stitle = [];
   for(var i=0; i<c; i++){
     atarget[i] = i;
     stitle[i] = retitle[i];
   }

var oTable = $('#table_id').dataTable({
 "bPaginate": false,
 "bProcessing": true,
 "bLengthChange": true,
 "bFilter": true,
  "bRetrieve": true,
 "bInfo": false,
 "bAutoWidth": false,
 "bServerSide": true,
 "sDom": '<"top"iflp<"clear">>rt<"bottom"iflp<"clear">>',
 "aLengthMenu": [[10, 25, 50, -1], [10, 25, 50, "All"]],
 "sAjaxSource": './aadata.txt',
 "aoColumnDefs": [
    {"sTitle":stitle,"aTargets":aTarget}
  ]

 }); 

但它不起作用。

【问题讨论】:

    标签: javascript jquery-datatables


    【解决方案1】:

    您可以像这样更改设置:

    var oTable;
    
    $(document).ready(function() {
        $('.something').click( function () {
            oTable._iDisplayLength = 50;
            oTable.fnDraw();
        });
    
        oTable = $('#table_id').dataTable();
    });
    

    【讨论】:

    • 感谢您的回复。如果我想更改“aTargets”,我应该写什么?根据这个链接:datatables.net/forums/discussion/11451/…,aoColumnDefs是不能改的吧?
    • 那么这就是你可以做的;使用 bDestroy 销毁表并使用新的初始化选项重新创建表。
    • 它可以工作,但我在格式化“aoColumnDefs”时仍然遇到问题。我编辑了问题并更改了上面的代码。可以看看吗?
    • c 和 rtitle 未定义。
    • 它们是先前定义的。结果表明,如果 retitle 是一个三元素数组 = [a,b,c],并且 c=3。然后标题显示 a,b,c | a,b,c | a,b,c| 而不是 a|b|c
    【解决方案2】:

    我通过更改在 HTML 中初始化表格的方式而不是更改 Datatables 中的设置解决了这个问题。

    我所做的是:首先,删除现有的表格,以及表格包装器!

     $('#table_id').remove();
     $('#table_id_wrapper').remove();
    

    然后初始化一个新表。并根据您的数据设置标题/正文的格式:

     var content = "<table id='table_id' class='display datatable' style='width:100%;'><thead>";
     content +='<tr>';
    
    
     re = re.substring(0,re.length-1);
     // alert(re);
     var retitle = re.split(",");
        alert (retitle + 'x');
       var c = retitle.length;
       var atarget = [];
       var stitle = [];
       for(var i=0; i<c; i++){
         atarget[i] = i;
         stitle[i] = retitle[i];
         content += '<td>' +retitle[i]  + '</td>';
    
       }
    
      content +=' </tr></thead>';
      content +='<tbody></tbody>'
      content += "</table>";
    

    最后,将表格附加到您的网页。在这里,我将它附加到我的标签:

      $('#tab3').append(content);
    

    顺便说一句,谢谢@Volkan Ulukut 的帮助。

    【讨论】:

      猜你喜欢
      • 2023-03-12
      • 1970-01-01
      • 2013-08-04
      • 1970-01-01
      • 1970-01-01
      • 2020-10-22
      • 1970-01-01
      • 2014-01-20
      • 1970-01-01
      相关资源
      最近更新 更多