2016-08-05 136 views
2

什么可能导致我的列被隐藏/压缩。一个加号放在行的旁边。对不起,我不确定这是什么被调用来检查数据表站点。datatables自己隐藏列

enter image description here

它调用列调整以固定头一旦被示出的模态后会发生。

var dtUsers = $('#table-user-results').DataTable({ 
     scrollY: "40vH", 
     scroller: true, 
     responsive: true 
    }); 

    $(document).on('shown.bs.modal', '#list-manage-users-modal', function() { 
     dtUsers.columns.adjust().draw(); 
    }); 

<table id="table-user-results" class="table table-striped table-bordered table-hovered dataTable"> 
       <thead class=""> 
        <tr> 
         <th>Name</th> 
         <th>Email</th> 
         <th>Role</th> 
        </tr> 
       </thead> 
       <tbody> 
        @foreach (var user in Model) 
        { 
         <tr id="@user.ID" class="@(!user.Email.Equals(User.Identity.Name, StringComparison.InvariantCultureIgnoreCase) ? "user-results-context" : "")"> 
          <td>@user.LastName, @user.FristName</td> 
          <td>@user.Email</td> 
          <td>@user.RoleName</td> 
         </tr> 
        } 
       </tbody> 
      </table> 

问题更新

因此,当没有足够的数据,需要滚动条问题被触发。

回答

3

您使用的是Responsive扩展名,它们在不适合视图时隐藏列。

但是,如果您在模式窗口中显示表格,响应扩展可能会错误地检测列宽,因为表最初是隐藏的。

解决方案是除columns.adjust()之外还使用responsive.recalc() API方法。

由于您使用Scroller扩展名,因此还需要调用scroller.measure() API方法。

请参见下面的代码:

$(document).on('shown.bs.modal', '#list-manage-users-modal', function(){ 
    $($.fn.dataTable.tables(true)).DataTable() 
     .columns.adjust() 
     .responsive.recalc() 
     .scroller.measure(); 
}); 

你也需要包括scrollCollapse: true选项,似乎有在这两个扩展一个不兼容错误。有关更多详细信息,请参见issue #854 on GitHub

请参阅this example了解代码和演示。

+0

HA ......谢谢,奇怪的是,当我删除它时,它恰到好处。 – Tsukasa

+0

@Tsukasa,这是一个很棒的扩展,我不会删除它。我添加了解释为什么它隐藏了列和解决方法。 –

+0

为了使这个工作正常,我不得不在这里添加'$('#table-user-results').DataTable(true,{'with responsive.recalc。否则头文件仍然会显示2,但行会显示3列,但第三个透明,能够看到列在那里,但空。 – Tsukasa

相关问题