#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. Это здорово! Добавьте это решение в качестве ответа, чтобы оно могло принести пользу другим.