Можно ли настроить TableSorter для отображения динамических данных в 1 таблице?

#jquery #dynamic #tablesorter #modx #modx-templates

#jquery #динамический #tablesorter #modx #modx-шаблоны

Вопрос:

Во-первых, какой отличный плагин; Теперь вопрос: можно ли настроить TableSorter для отображения динамических данных в 1 таблице? У меня есть форма на интерфейсе, и после отправки она сохраняется в mysql. Эти данные отображаются в таблице во внешнем интерфейсе. Здесь я сталкиваюсь с проблемой реализации TableSorter. Данные таблицы заполняются с помощью вызова фрагмента кода, поскольку данных много, я мог видеть, что дочерние строки в TableSorter идеально подходят для моего требования. Я нахожу, что таблица создается и заполняется первой строкой в базе данных. Затем 2-я строка создается в другой новой таблице, а 3-я строка — в другой новой таблице и так далее. Есть ли какой-либо код, который я мог бы использовать для устранения этой проблемы, чтобы все отображалось в 1 таблице? Это HTML, который я использую:

 <thead>
    <tr>
        <th>Id No #</th>
        <th>Collection City</th>
        <th>Delivery City</th>
        <th>Date</th>
        <th>Cubic Metres Available</th>
    </tr>
</thead>
<tbody>
    <!-- First row expanded to reveal the layout -->
    <tr>
        <td rowspan="2"> <!-- rowspan="2" makes the table look nicer -->
            <a href="#" class="toggle">[[ id]]</a> <!-- link to toggle view of the child row -->
        </td>
        <td>[[ deptown]]</td>
        <td>[[ arrtown]]</td>
        <td>[[ freightdate]]</td>
        <td>[[ cubmt]]</td>
    </tr>
    <tr class="tablesorter-childRow"><td colspan="4"><div class="bold">Vehicle Type</div><div>[[ vehicletype]]<br></div></td></tr>
    <tr class="tablesorter-childRow"><td colspan="4"><div class="bold">Job Details</div><div>[[ freightvehicledetail]]<br></div></td></tr>
    <tr class="tablesorter-childRow"><td colspan="4"><div class="bold">Contact Details</div><div>[[ freightvehiclecontact]]<br></div></td></tr>
    </tbody>
  

Надеюсь, у кого-то есть решение, потому что этот плагин потрясающий 🙂

Для наглядности я использую следующие неотредактированные файлы css и js:

тема.синий jquery.tablesorter.pager

jquery.tablesorter jquery.tablesorter.widgets виджет-пейджер

Вызов BloX

  [[!bloX? amp;packagename=`available-freight` amp;limit=`0` amp;classname=`AvailableFreight`     amp;tpls=`bloxouter:outerTpl||row:rowaTpl` amp;debug=`0`]]
  

outerTpl

 <ul> [[ innerrows.row]] </ul>
  

rowaTpl (содержит приведенный выше html (начальный пост) с добавленным кодом tablesorter, ниже)

 <script src="js/jquery-latest.min.js"></script>

<!-- Tablesorter: required -->
<link rel="stylesheet" href="../css/theme.blue.css">
<script src="../js/jquery.tablesorter.js"></script>
<script src="../js/jquery.tablesorter.widgets.js"></script>

<!-- Tablesorter: pager -->
<link rel="stylesheet" href="../css/jquery.tablesorter.pager.css">
<script src="../js/widget-pager.js"></script>

<script id="js">$(function() {
$(".tablesorter")
    .tablesorter({
        theme : 'blue',
        // this is the default setting
        cssChildRow: "tablesorter-childRow",

        // initialize zebra and filter widgets
        widgets: ["zebra", "filter", "pager"],

        widgetOptions: {
            // output default: '{page}/{totalPages}'
            // possible variables: {page}, {totalPages}, {filteredPages}, {startRow}, {endRow}, {filteredRows} and {totalRows}
            pager_output: '{startRow} - {endRow} / {filteredRows} ({totalRows})', // '{page}/{totalPages}'
            pager_removeRows: false,


            // include child row content while filtering, if true
            filter_childRows  : true,
            // class name applied to filter row and each input
            filter_cssFilter  : 'tablesorter-filter',
            // search from beginning
            filter_startsWith : false,
            // Set this option to false to make the searches case sensitive 
            filter_ignoreCase : true
        }

    });

// hide child rows
$('.tablesorter-childRow td').hide();

// Toggle child row content (td), not hiding the row since we are using rowspan
// Using delegate because the pager plugin rebuilds the table after each page change
// "delegate" works in jQuery 1.4.2 ; use "live" back to v1.3; for older jQuery - SOL
$('.tablesorter').delegate('.toggle', 'click' ,function(){

    // use "nextUntil" to toggle multiple child rows
    // toggle table cells instead of the row
    $(this).closest('tr').nextUntil('tr.tablesorter-hasChildRow').find('td').toggle();

    return false;
});

// Toggle widgetFilterChildRows option
$('button.toggle-option').click(function(){
    var c = $('.tablesorter')[0].config.widgetOptions,
    o = !c.filter_childRows;
    c.filter_childRows = o;
    $('.state').html(o.toString());
    // update filter; include false parameter to force a new search
    $('table').trigger('search', false);
    return false;
});
  

});

Надеюсь, это то, что вы хотите, если нет, пожалуйста, обновите, и я углублюсь в BloX.

Комментарии:

1. Можете ли вы поделиться кодом, который вы используете для обновления таблицы? Или в таблице запускается «обновление» для обновления кэшированных значений?

2. На сайте Modx с MIGXDB с использованием подключаемого модуля BloX для извлечения данных BloX перечисляет записи xpdo-объектов, созданных MIGX.

3. Я добавил вызов bloX к вышеуказанному сообщению

4. свяжите ссылку с фактической страницей, возможно, это поможет решить проблему

Ответ №1:

Извините, я не знаком с использованием MIGXDB или подключаемого модуля BloX; но я обновлю теги этого вопроса.

Я могу помочь с частью визуальной проблемы… Комбинация rowspan и colspan не совпадают в родительских и дочерних группах строк. Установлено rowspan 2 значение, но есть 3 дочерние строки. Итак, либо установите значение rowspan to 4 (включает родительский элемент), либо сделайте так, чтобы третья и четвертая дочерние строки имели colspan значение of 5 вместо 4 .

 <!-- First row expanded to reveal the layout -->
<tr>
    <td rowspan="4">
        <a href="#" class="toggle">[[ id]]</a>
    </td>
    <td>[[ deptown]]</td>
    <td>[[ arrtown]]</td>
    <td>[[ freightdate]]</td>
    <td>[[ cubmt]]</td>
</tr>
<tr class="tablesorter-childRow"><td colspan="4"><div class="bold">Vehicle Type</div><div>[[ vehicletype]]<br></div></td></tr>
<tr class="tablesorter-childRow"><td colspan="4"><div class="bold">Job Details</div><div>[[ freightvehicledetail]]<br></div></td></tr>
<tr class="tablesorter-childRow"><td colspan="4"><div class="bold">Contact Details</div><div>[[ freightvehiclecontact]]<br></div></td></tr>
  

Комментарии:

1. Привет, Мотти, спасибо, что нашли время посмотреть 🙂 Я обновил ваше предложение, и теперь дочерние строки выглядят намного лучше. Проблема с несколькими таблицами звучит так, как будто это проблема с Migx или вызовом BloX. Я разместил сообщение на соответствующем форуме Modx, если я найду там решение, я опубликую его здесь.

2. Как я уже сказал, я ничего не знаю о системе шаблонов, которую вы используете, но мне это кажется неправильным, <ul> [[ innerrows.row]] </ul> почему строки находятся в неупорядоченном списке?

3. Только что обнаружил еще одну общую странность: когда я обновляю данные (заполняя форму), дочерние строки могут расширяться при каждом втором обновлении…. В настоящее время всего 9 строк, и дочерние строки могут быть расширены, если я добавлю десятую строку, то ни одна из дочерних строк не может быть расширена, пока я не добавлю одиннадцатую строку ….. Я нашел этот шаблон, увеличив строку данных за строкой с 3 строк до 9.

4. Привет, Мотти ….. к вашему сведению …. проблема была решена на плате modx ….. ваше подозрение о том, как BloX вызывал таблицы, было правильным, и владелец этого плагина предоставил некоторый код, который работал с удовольствием ….. ссылка ….. если щелкнутьссылка ответ находится в ответе 7…… Я хочу поблагодарить вас за TableSorter, это потрясающе 🙂

5. Это здорово! Добавьте это решение в качестве ответа, чтобы оно могло принести пользу другим.