Я использую это bootstrap-table. Я хотел бы вложить один стол в другой.Загрузочный стол: как вложить один стол в другой?
$(document).ready(function() {
var t = [{
"id": "1",
"name": "john",
}, {
"id": "2",
"name": "ted"
}];
//TABLE 1
$('#summaryTable').bootstrapTable({
data: t,
detailFormatter: detailFormatter
});
function detailFormatter(index, row, element) {
$(element).html(row.name);
$(element).html(function() {
//I was thinking of putting the code here, but I don't know how to do it so it will work,
//except javascript, it needs to be put this html code <table id="detailTable"></table>
});
// return [
// ].join('');
}
//TABLE 2
var t2 = [{
"id": "1",
"shopping": "bike",
}, {
"id": "2",
"shopping": "car"
}];
$('#detailTable').bootstrapTable({
data: t2,
columns: [{
field: 'id',
title: 'id'
}, {
field: 'shopping',
title: 'Shopping detail'
}, {
field: 'status',
checkbox: true
}],
checkboxHeader: false
});
$('#detailTable').on('check.bs.table', function(e, row, $el) {
alert('check index: ' + row.shopping);
});
$('#detailTable').on('uncheck.bs.table', function(e, row, $el) {
alert('uncheck index: ' + row.shopping);
});
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<link href="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-table/1.10.0/bootstrap-table.min.css" rel="stylesheet"/>
<link href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.6/css/bootstrap.min.css" rel="stylesheet"/>
<script src="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.6/js/bootstrap.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-table/1.10.0/bootstrap-table.min.js"></script>
<div class="container">
<p>TABLE 1</p>
<table id="summaryTable" data-detail-view="true">
<thead>
<tr>
<th data-field="id" data-align="center" data-width="20px">id</th>
<th data-field="name" data-align="center">Name</th>
</tr>
</thead>
</table>
<br>
<p>TABLE 2</p>
<table id="detailTable"></table>
</div>
Вот ссылка моей демо: fiddle
Есть две таблицы. В таблице 1 есть расширяемые строки, и я хочу поместить таблицу 2 в каждую строку таблицы 1. Эта функция называется detailFormatter, которая делает это и где вы можете вернуть строку или визуализировать элемент (я играл с ним, но я могу " t заставить его работать). Для этой демонстрации таблица 1 создается с некоторым html-кодом, а в таблице 2 используется только javascript, но есть этот инициирующий div <table id="detailTable"></table>
(для меня не имеет значения, как это делается). Итак, вопрос заключается в том, как поставить таблицу 2 в таблицу 1 с возможностью использования ее событий (например, отметьте или снимите флажок), как показано в демонстрации для таблицы2? Позже я хотел бы использовать это событие onExpandRow
поэтому, когда пользователь расширяет строку таблицы 1, он будет получать данные из базы данных, и это будет заполнить таблицу 2.
спасибо. Меня устраивает. Мне просто нужно было поместить таблицу 2 в Div, чтобы удалить эту строку в таблице 1 и сделать ограничение с одной открытой строкой в то время, поэтому пользователь не будет отмечать флажок в двух разных открытых строках. У меня еще 2 вопроса о css. Как сделать 'padding: 0' только для таблицы 2? и как изменить фоновый цвет строки для таблицы 1, где строка расширена и после ее свертывания возвращается старый цвет? [обновленная демонстрация] (https://jsfiddle.net/fjykowtL/3/) Я добавил функцию «expand-row» и некоторый код CSS. – soonic
** ['Что-то вроде этого'] (https://jsfiddle.net/Guruprasad_Rao/fjykowtL/4/) ** –
точно, еще раз спасибо, а как насчет первого вопроса? Таблица 2 размещена с заполнением 8px, и я узнал, что строка '.bootstrap-table .table: not (.table-condensed)> tbody> tr> td 'в bootstrap-table.css вызывает это поведение, но если я попытаюсь перезаписать его, это повлияет на всю таблицу 1 и 2. – soonic