解决bootstrap-table-fixed-columns.js显示列与隐藏列按钮切换表格不对齐

<table class="table-striped table-hasthead nowrap" id="tableTest1" data-search="true" data-show-columns="true" data-fixed-columns="true" data-fixed-number="3">
</table>

含有data-show-columns="true"属性时会在右边显示能够切换列的按钮javascript

结合bootstrap-table-fixed-columns.js插件使用时会出现列不对齐的问题html

查看Dom结构发现点击一次具体列切换按钮时会增长一个class 为fixed-table-header-columns 的html片断,咱们只需保留最后一个,解决方法java

一、先删除多余的htmlbootstrap

二、执行表格对齐函数函数

为了使排序的图标正常显示,须要在onSort的事件中执行能使图标正常显示的代码(注意若是要使固定的列有排序的功能请看我另外一篇博客https://my.oschina.net/u/2612473/blog/2395979).net

完整代码以下:插件

<script type="text/javascript">
    $(function() {
        $('#tableTest1').bootstrapTable({
            sortable: true,
            height: $(window).height() - 360,
            onSort: function(name, order) {
               
                $(".fixed-table-header-columns").find("th[data-field]").find("div.sortable").removeClass("asc desc")
                $(".fixed-table-header-columns").find("th[data-field=" + name + "]").find("div.sortable").removeClass("asc desc").addClass(order);
                fixleftwidth()
            },
            onColumnSwitch: function(field, checked) {
                //setTimeout(function() {
                var colnumBody = $(".fixed-table-body-columns");
                var colnumHead = $(".fixed-table-header-columns");
                var len = $(".fixed-table-body-columns").length;
                for (var i = 0; i < len - 1; i++) {
                    colnumBody.eq(i).remove()
                    colnumHead.eq(i).remove()
                }
                fixleftwidth()
                //}, 0)
            },
        });

        function fixleftwidth() {
            setTimeout(function() {
                $(".fixed-table-body-columns tr td:first-child").height(22);
                var fixColumnTds = $(".fixed-table-body-columns tr:first-child td");
                var fixNum = fixColumnTds.length;
                var tableBody = $(".fixed-table-body tbody tr:first-child td");

                for (var i = 0; i < fixNum; i++) {
                    fixColumnTds.eq(i).width(tableBody.eq(i).width())
                }
            }, 0)
        }
        fixleftwidth()
        $(window).resize(function() {
            $('#tableTest1').bootstrapTable('resetView');
            fixleftwidth()
        });

    });
    //格式化显示,内容太长时带省略号 
    //<th data-sortable="true" class="name11" data-formatter="testFormatter">状态</th>
    function testFormatter(value, row, index, field) {
        if (value != null && value.length > 5) {
            return '<a title="' + value + '" href="javascript:void(0)" >' + value.substr(0, 5) + '...</a>';
        }
        return value;
    }
    </script>

查看表格效果code

相关文章
相关标签/搜索