【问题标题】:Datatables headers not full width on page load页面加载时数据表标题不是全宽
【发布时间】:2017-02-08 13:58:01
【问题描述】:

使用数据表加载我的 Web 应用程序页面时,数据表已加载,但 <thead> 行不是表的全宽。

编辑数据后,或在数据表搜索中搜索,表头跳转到全宽。见图片。

对此有任何解决方案或解决方法吗?

数据表截图:

我的普通数据表很好,但是这个是在模式中加载的。 代码模态:

<!-- Get selected shops modal -->
<div id="SelectedShopsModal" class="infomodal">
    <div class="shops-content">
        <h2><span class="closeModalSelectedShops">&times;</span> <?php echo lang('Shops'); ?></h2>
        <div class="detailblock">
            <table id="DataListTableSelectedShops" class="display" cellspacing="0" width="100%">
                <thead>
                    <th class="OE"><?php echo lang('Shop_No'); ?></th>
                    <th class="OE"><?php echo lang('Shop_Name'); ?></th>
                    <th class="OE"><?php echo lang('Shop_District'); ?></th>
                </thead>
                <tbody>
                    <?php foreach($selected_shops as $shop){
                        echo "<tr><td>" . $shop['Shop'] . "</td><td>" . $shop['Name'] . "</td><td>" . $shop['District'] . "</td></tr>";
                    } ?>
                </tbody>
            </table>
            <br /><button class="closeBtnSelectedShops btn red"><?php echo lang('Close'); ?></button>
            <button class="btn red" onclick="delete_oneshots();"><i class="fa fa-trash" aria-hidden="true"></i> <?php echo lang('Delete_shops'); ?></button>
        </div>
    </div>
</div>

我在页面页脚中使用的 javascript:

//datatable to display all selected shops on detail page
selectedshoptable = $('#DataListTableSelectedShops').DataTable( {
    "dom": "Bfrtip",
    "scrollY": "300px",
    "scrollCollapse": true,
    "bPaginate": false,
    "bInfo" : false,
    "fields": [ {
        label: "Shopnr",
        name: "Shop"
    }, {
        label: "Shopname:",
        name: "Name"
    }, {
        label: "District",
        name: "District"
    }],
    "buttons":[{
        extend: 'selectAll',
        text: '<?php echo lang('Select_all'); ?>',
        className: 'btn red'
    }, {
        text: '<?php echo lang('Select_none'); ?>',
        className: 'btn red',
        action: function () {
            selectedshoptable.rows().deselect();
        }
    }],
    "language": {
        "zeroRecords": "<?php echo lang('Nothing_found'); ?>",
        "infoEmpty": "<?php echo lang('No_records_available'); ?>",
        "search":"<?php echo lang('Search'); ?>",
        "buttons": {"selectNone": "Select none"}
    }
});

【问题讨论】:

  • 你能把你的代码贴在这里吗?
  • 嗨,大卫,我的代码已添加。

标签: javascript datatables header modal-dialog


【解决方案1】:

原因

您的表格最初是隐藏的,这会阻止 jQuery DataTables 调整列宽。

解决方案

  • 如果表格在可折叠元素中,则需要在可折叠元素可见时调整标题。

    例如,对于 Bootstrap Collapse 插件:

    $('#myCollapsible').on('shown.bs.collapse', function () {
       $($.fn.dataTable.tables(true)).DataTable()
          .columns.adjust();
    });
    
  • 如果表格在选项卡中,则需要在选项卡可见时调整标题。

    例如,对于 Bootstrap Tab 插件:

    $('a[data-toggle="tab"]').on('shown.bs.tab', function(e){
       $($.fn.dataTable.tables(true)).DataTable()
          .columns.adjust();
    });
    

上面的代码调整页面上所有表格的列宽。有关详细信息,请参阅columns().adjust() API 方法。

响应式、滚动式或固定列扩展

如果您使用 Responsive、Scroller 或 FixedColumns 扩展,则需要使用额外的 API 方法来解决此问题。

链接

请参阅jQuery DataTables – Column width issues with Bootstrap tabs,了解在最初隐藏表格时 jQuery DataTables 中列最常见问题的解决方案。

【讨论】:

  • 感谢您的回答。我添加了 selectedshoptable.columns.adjust();到我的模态的JS函数,它工作正常。
猜你喜欢
  • 2016-04-25
  • 1970-01-01
  • 2018-08-01
  • 1970-01-01
  • 2018-12-04
  • 2016-06-10
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多