【问题标题】:DataTables - scrollX causing squashed headerDataTables - scrollX 导致压扁的标题
【发布时间】:2017-07-17 04:55:54
【问题描述】:

所以我正在使用将 scrollX 参数设置为 true 的 DataTables,但它会导致 thead 列折叠。

注意:数据表作为 React 项目的一部分出现在 Bootstrap Modal 中。

我该如何解决这个问题?

当我单击其中一列,使其刷新时,它会自行修复。此外,如果我删除 scrollX 它也不会崩溃。

初始化代码:

$('#item-search').DataTable( {
          ajax: {
            "data": {
              type: "map_items",
              map_id: this.map_id
            },
            "dataSrc": (r) => {
              console.log(r);
              return r.data;
            },
            type: "POST",
            url: "src/php/search.php"
          },
          autoWidth : false,
          columns: [
            {
              "data": "brand"
            },
            {
              "data": "name"
            },
            {
              "data": "quantity"
            },
            {
              "data": "measurement"
            },
            {
              "data": "type"
            },
          ],
          dom: 'rtlip',
          language: {
            "info": "Showing page _PAGE_ of _PAGES_",
            "infoFiltered": ""
          },
          lengthMenu: [ 1, 2, 3 ],
          pageLength: 1,
          processing: true,
          responsive: true,
          scrollX: true,
          select: {
            style: "multi"
          },
          serverSide: true
      });

【问题讨论】:

  • 您查看过 DataTables 支持论坛吗?那里可能已经回答了这个问题。
  • @Difster 一直在谷歌上搜索我的问题的几个变体。大多数答案都是使用旧版本。

标签: javascript jquery css datatables


【解决方案1】:

在数据表初始化中包含以下属性。

autoWidth : true

加上这个

"fnInitComplete": function(oSettings) {
                        $( window ).resize();
                    }

 "fnDrawCallback": function(oSettings) {
      $( window ).trigger('resize');
    }

【讨论】:

  • 我应该注意到这个数据表作为反应项目的一部分出现在 BootStrap 模式中。所以当它不是模态的一部分时它可以工作。
  • 更新了答案,注意我把 autoWidth 改成了 true
【解决方案2】:

DataTable需要初始化如下代码,实现横向滚动:

"sScrollX": "100%",
"sScrollXInner": "110%",
"bScrollCollapse": true,
"fixedColumns":   {
   "leftColumns": 1
}

【讨论】:

    【解决方案3】:
    $('#DataTableID').DataTable({
      //"scrollX": true,            
      "initComplete": function (settings, json) {  
        $("#DataTableID").wrap("<div style='overflow:auto; width:100%;position:relative;'></div>");            
      },
    });
    

    【讨论】:

      【解决方案4】:

      这项工作在我的 Angular 项目中

      this.dtTarifas = {
            scrollX: true,
            autoWidth: false,
            lengthChange: false,
            responsive: false
      }
      

      我的 package.json 中有 "angular-datatables": "7.0.0"

      【讨论】:

        猜你喜欢
        • 2019-03-16
        • 2014-06-02
        • 1970-01-01
        • 2015-01-15
        • 2020-11-03
        • 2018-03-10
        • 2015-12-19
        • 1970-01-01
        • 2022-12-11
        相关资源
        最近更新 更多