启用scrollX时,包含按钮下拉列表的行会导致垂直滚动

时间:2019-05-30 19:09:06

标签: twitter-bootstrap datatables datatables-1.10

由于显示的列数,我有一个启用了scrollX的数据表。表格行包含一个包含多个项目的引导按钮下拉列表。选择下拉菜单时,将启用滚动,很难选择正确的操作。选择下拉菜单时,如何调整视口的大小,以免出现垂直滚动?

jsfiddle是https://jsfiddle.net/darwinaero/q9mLg375/15/


    $(function() {

      $('#tblTest').DataTable({
        dom: 'Blfrtip',
        scrollX: true,
        paging: true,
        responsive: true
      });
    });


    <div class="container-fluid">
      <div class="row">
        <div class="col-md-12">
          <table id="tblTest">
            <thead>
              <tr>
                <th>Col1</th>
                <th>Col2</th>
                <th>Col3</th>
                <th>Col4</th>
                <th>Col5</th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td>some data</td>
                <td>some data</td>
                <td>some data</td>
                <td>some data</td>
                <td>
                  <div class="btn-group">
                    <button type="button" class="btn btn-primary dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
        Action <span class="caret"></span>
      </button>
                    <ul class="dropdown-menu">
                      <li><a href="#">Action</a></li>
                      <li><a href="#">Another action</a></li>
                      <li><a href="#">Something else here</a></li>
                      <li role="separator" class="divider"></li>
                      <li><a href="#">Separated link</a></li>
                    </ul>
                  </div>
                </td>
              </tr>
            </tbody>
          </table>
        </div>
      </div>
    </div>

3 个答案:

答案 0 :(得分:1)

使用属性 data-container="body"

<select data-container="body">
...
</select>

http://jsfiddle.net/IceManSpy/Y9hyD/2/

答案 1 :(得分:0)

您可以想到三个选择:

  1. 用css和/或JavaScript覆盖Store<State>元素的overflow
  2. 在数据表设置中将div.dataTables_scrollBody设置为固定值(例如600,表示600px)。
  3. 编写您自己的dropdown元素,将打开的dropdown-list呈现在表格元素的上方/上方。

前两个选项可以实现安静简单。

以下是选项1的示例:

由于将溢出设置为“可见”会创建一些通常不希望的滚动行为,因此我们必须侦听引导程序下拉列表中的事件,并动态应用溢出样式。 < / p>

scrollY
$(function() {       
  $('#tblTest').DataTable({
    dom: 'Blfrtip',
    scrollX: true,
    paging: true,
    responsive: true
  });
  
  $('#tblTest').on('show.bs.dropdown', function () {
    $('.dataTables_scrollBody').addClass('dropdown-visible');
  })
  .on('hide.bs.dropdown', function () {
    $('.dataTables_scrollBody').removeClass('dropdown-visible');
  });
});
div.dataTables_scrollBody.dropdown-visible {
  overflow: visible !important;
}

答案 2 :(得分:0)

对我来说最简单的解决方法是为 dataTables_scrollBody 设置一个最小高度。您可以根据下拉列表中的项目列表增加最小高度。只需将其添加到您的样式表中即可。

.dataTables_scrollBody {
 min-height: 250px !important;
}