Datatables: изменить высоту таблицы не работает - PullRequest
10 голосов
/ 06 октября 2011

Я использую таблицу Jquery Datatables с bPaginate = false и sScrollY - некоторая фиксированная высота.В конечном итоге я хочу, чтобы таблица изменила размер события window.resize.

Чтобы заставить это работать, я построил меньший тестовый сценарий: в следующих фрагментах кода я хочу, чтобы размер таблицы изменялся при нажатии кнопки

HTML:

<!DOCTYPE html>
<html>
<head>
<link class="jsbin" href="http://ajax.googleapis.com/ajax/libs/jqueryui/1/themes/base/jquery-ui.css" rel="stylesheet" type="text/css" />
<script class="jsbin" src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script>
<script class="jsbin" src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.13/jquery-ui.min.js"></script>
<script type="text/javascript" language="javascript" src="http://www.datatables.net/release-datatables/media/js/jquery.dataTables.js"></script>
<meta charset=utf-8 />
<title>JS Bin</title>
</head>
<body>
  <input id="button" type="button" value="Click me!" />
  <table cellpadding="0" cellspacing="0" border="0" class="display" id="example">
    <thead>
        <tr>
            <th>Rendering engine</th>

            <th>Browser</th>
            <th>Platform(s)</th>
            <th>Engine version</th>
            <th>CSS grade</th>
        </tr>
    </thead>
    <tbody>
        <tr class="odd gradeX">
            <td>Trident</td>
            <td>Internet
                 Explorer 4.0</td>
            <td>Win 95+</td>
            <td class="center"> 4</td>
            <td class="center">X</td>

        </tr>
        <tr class="even gradeC">
            <td>Trident</td>
            <td>Internet
                 Explorer 5.0</td>
            <td>Win 95+</td>
            <td class="center">5</td>
            <td class="center">C</td>

        </tr>
        <tr class="odd gradeA">
            <td>Trident</td>
            <td>Internet
                 Explorer 5.5</td>
            <td>Win 95+</td>
            <td class="center">5.5</td>
            <td class="center">A</td>

        </tr>
    </tbody>
    <tfoot>
        <tr>
            <th>Rendering engine</th>
            <th>Browser</th>
            <th>Platform(s)</th>

            <th>Engine version</th>
            <th>CSS grade</th>
        </tr>
    </tfoot>
</table>
  </body>
</html>

Javascript:

$('#button').click(function() {
  console.log('Handler for .click() called.');
  table = $('#example').dataTable();
  settings = table.fnSettings();  
  console.log('old:' + settings.oScroll.sY);
  settings.oScroll.sY = '150px';
  console.log('new:' + settings.oScroll.sY);
  table.fnDraw(false);
});
$('#example').dataTable({
  "sScrollY": "350px",
  "bPaginate": false,
  "bJQueryUI": true
});

Вывод на консоль соответствует ожиданиям:

Handler for .click() called.
old:350px
new:150px

, но таблица не обновляется!Любая идея, что я делаю неправильно?

Живой пример можно найти здесь: http://jsbin.com/anegiw/12/edit

Ответы [ 3 ]

20 голосов
/ 07 октября 2011

Хорошо, что, кажется, работает хорошо, это подключиться к элементам, добавленным фреймворком datatbables:

$(window).resize(function() {
  console.log($(window).height());
  $('.dataTables_scrollBody').css('height', ($(window).height() - 200));
});

$('#example').dataTable({
  "sScrollY": ($(window).height() - 200),
  "bPaginate": false,
  "bJQueryUI": true
});

Этот пример позволяет гладко изменять размер таблицы вместе с окном.

Живой пример: http://jsbin.com/anegiw/18/edit

0 голосов
/ 05 сентября 2014

Это исправило это для меня:

#data_wrapper.dataTables_wrapper
{
     height: 700px !important;
     background-color: #F1F1F1 !important;
}
#data_wrapper .fg-toolbar.ui-toolbar.ui-widget-header.ui-helper-clearfix.ui-corner-bl.ui-corner-br
{
       position: absolute;
       width: 100%;
       bottom: 0;
}

Вы можете изменить высоту в соответствии с вашим количеством записей.

0 голосов
/ 07 октября 2011

Может случиться так, что значение sScrollY устанавливает только размер таблицы при инициализации, а затем при изменении значения оно не находится в таблице.Это значение может использоваться только для сообщения таблиц данных «после того, как эта сумма прокрутки отобразит больше результатов», поэтому вам, возможно, придется создать фасад, который обновит sScrollY, а затем вручную обновит ширину CSS этой таблицы до желаемой высоты.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...