如何在 DataTable 中保留固定列?

Posted

技术标签:

【中文标题】如何在 DataTable 中保留固定列?【英文标题】:How do I leave a fixed column in DataTable? 【发布时间】:2020-12-07 21:28:49 【问题描述】:

我需要一些关于 dataTable 中“fixedColumn”属性的帮助。因此,我需要修复表中的前 4 列,但是任何方法都可以使用,我尝试了 https://datatables.net/reference/option/fixedColumns#:~:text=FixedColumns%20provides%20the%20option%20to,scrolling%20through%20the%20data%20set 中的示例。 https://datatables.net/extensions/fixedcolumns/examples/initialisation/left_right_columns.html 中的另一个示例,其中任何一个都有效。

这是我的桌子:

<div class="row">
      <div class="col-md-12">
        <div class="box box-primary" style="padding: 3px;">
          <div id="chartcontainerSummary">
          <table class="table table-bordered table-responsive table-striped table-hover display row-border order-column" id="tabelaGrande">
            <br>
            <thead>
              <tr>
                <th>Family</th>
                <th>Demand</th>
                <th>MTD</th>
                <th>Delta</th>
                <th>    2020-08-01  </th>
                <th>    2020-08-02  </th>
                <th>    2020-08-03  </th>
                <th>    2020-08-04  </th>
                <th>    2020-08-05  </th>
                <th>    2020-08-06  </th>
                <th>    2020-08-07  </th>
                <th>    2020-08-08  </th>
                <th>    2020-08-09  </th>
                <th>    2020-08-10  </th>
                <th>    2020-08-11  </th>
                <th>    2020-08-12  </th>
                <th>    2020-08-13  </th>
                <th>    2020-08-14  </th>
                <th>    2020-08-15  </th>
                <th>    2020-08-16  </th>
                <th>    2020-08-17  </th>
                <th>    2020-08-18  </th>
                <th>    2020-08-19  </th>
                <th>    2020-08-20  </th>
                <th>    2020-08-21  </th>
                <th>    2020-08-22  </th>
                <th>    2020-08-23  </th>
                <th>    2020-08-24  </th>
                <th>    2020-08-25  </th>
                <th>    2020-08-26  </th>
                <th>    2020-08-27  </th>
                <th>    2020-08-28  </th>
                <th>    2020-08-29  </th>
                <th>    2020-08-30  </th>
                <th>    2020-08-31  </th>
              </tr>
            </thead>
            <?php  while ($arr = mysqli_fetch_array($resultFamily)) ?>
            <tr>
              <td><?php echo $arr['family_sap']; ?></td>
              <td>teste</td>
              <td>teste</td>
              <td>teste</td>
              <td>teste</td>
              <td>teste</td>
              <td>teste</td>
              <td>teste</td>
              <td>teste</td>
              <td>teste</td>
              <td>teste</td>
              <td>teste</td>
              <td>teste</td>
              <td>teste</td>
              <td>teste</td>
              <td>teste</td>
              <td>teste</td>
              <td>teste</td>
              <td>teste</td>
              <td>teste</td>
              <td>teste</td>
              <td>teste</td>
              <td>teste</td>
              <td>teste</td>
              <td>teste</td>
              <td>teste</td>
              <td>teste</td>
              <td>teste</td>
              <td>teste</td>
              <td>teste</td>
              <td>teste</td>
              <td>teste</td>
              <td>teste</td>
              <td>teste</td>
              <td>teste</td>
            </tr>
            <?php  ?>
          </table>
          </div>
        </div>
      </div>
    </div>

这是我的 js:

function tabela()
        $("#tabelaGrande").DataTable(
            "paging": false,
            "scrollX": true,
            "scrollY" : "450px",
            "scrollCollapse": true,
            fixedColumns:   
            leftColumns: 1
        
        );
    
    tabela();

这是我的库: JS:

<script src="https://cdn.datatables.net/buttons/1.6.2/js/dataTables.buttons.min.js"></script>
<script src="https://cdn.datatables.net/buttons/1.6.2/js/buttons.flash.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jszip/3.1.3/jszip.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/pdfmake/0.1.53/pdfmake.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/pdfmake/0.1.53/vfs_fonts.js"></script>
<script src="https://cdn.datatables.net/buttons/1.6.2/js/buttons.html5.min.js"></script>
<script src="https://cdn.datatables.net/buttons/1.6.2/js/buttons.print.min.js"></script>
<script src="https://cdn.datatables.net/1.10.21/js/jquery.dataTables.min.js" ></script>
<scritp src="https://cdn.datatables.net/fixedcolumns/3.3.1/js/dataTables.fixedColumns.min.js"></script>

CSS:

<link rel="stylesheet" href="https://cdn.datatables.net/buttons/1.6.2/css/buttons.dataTables.min.css">
  <link rel="stylesheet" href="https://cdn.datatables.net/1.10.21/css/jquery.dataTables.min.css">
  <link rel="stylesheet" href="https://cdn.datatables.net/fixedcolumns/3.3.1/css/fixedColumns.dataTables.min.css">

所以,它不起作用....我做错了什么?

非常感谢大家!

【问题讨论】:

【参考方案1】:

是的,你可以这样做

$(document).ready(function() 
    var table = $('#example').DataTable( 
        scrollY:        "300px",
        scrollX:        true,
        scrollCollapse: true,
        paging:         false,
        fixedColumns:   
            leftColumns: 2
         
    );
 );

这里正在工作fiddle

【讨论】:

好吧,它获得了关于分页和滚动的那些属性,但没有修复我的列 先渲染html然后初始化数据表 是的,我想通了...可能库错误...我使用的是 Bootstrap 3,固定列使用的是 bootstrap 4 好吧,终于,找到了我的库,它正在破坏我的代码,只是将其删除并放在 bs4.... 工作!非常感谢,上帝保佑你!

以上是关于如何在 DataTable 中保留固定列?的主要内容,如果未能解决你的问题,请参考以下文章

在 Chrome 浏览器中具有固定列的 DataTable 显示标题和正文之间的空间

如何在dataTable现有列中添加静态数据列

如何做:C#写的C/S程序,DataGridView中要添加一列下拉选框,下拉选框的内容由DataTable的一列绑定.

如何在 Flutter 中隐藏 DataTable 的列标题?

c#中同一个Datatable中的如何把重复的记录合并起来,

php datatable固定住前几列为啥会有横向滚动条,怎么去掉呢?