【发布时间】:2022-08-04 20:31:16
【问题描述】:
我有一张桌子,上面有问题,每个问题有一个或多个答案。该表以某种方式格式化,每个问题都是一行,答案通过 rowFormatter 和 subTable 显示在下面。当我将表格下载为 pdf 时,不会导出嵌套数据。如何导出嵌套数据?
数据结构(示例):
{
\"questiontext\": \"text\",
\"timestamp\": \"2022-07-25T20:19:41.933Z\",
\"answers\": [
{
\"timestamp\": \"2022-07-25T20:19:41.933Z\",
\"answer\": \"answertext\",
\"picture\":\"pic1.jpg\"
},
{
\"timestamp\": \"2022-07-26T20:19:41.933Z\",
\"answer\": \"answertext\",
\"picture\":\"pic2.jpg\"
},
{
\"timestamp\": \"2022-07-27T20:19:41.933Z\",
\"answer\": \"answertext\",
\"picture\":\"pic3.jpg\"
}
]
},
代码:
var table = new Tabulator(\"#table\", {
height: \"805px\",
layout: \"fitColumns\",
columns: [
{ title: \"Time\", field: \"timestamp\"},
{ title: \"Question\", field: \"questiontext\"},
],
rowFormatter: function (row) {
var holderEl = document.createElement(\"div\");
var tableEl = document.createElement(\"div\");
holderEl.appendChild(tableEl);
row.getElement().appendChild(holderEl);
var subTable = new Tabulator(tableEl, {
height:\"1px\",
layout:\"fitColumns\",
data:row.getData().answers,
columns:[
{title:\"Answers\", field:\"answer\"},
],
rowFormatter:function(row_inner){
var element = row.getElement(),
data = row_inner.getData(),
width = element.offsetWidth,
rowTable, cellContents;
rowTable = document.createElement(\"table\")
rowTable.style.width = (width - 18) + \"px\";
rowTabletr = document.createElement(\"tr\");
//add image on left of row
cellContents = \"<td><img src=\'/pictures/\" + data.picture + \"\'></td>\";
//add row data on right hand side
cellContents += \"<td><div><strong>Timestamp:</strong> \" + data.timestamp + \"</div><div><strong>Answer:</strong> \" + data.answer +\"</div></td>\"
rowTabletr.innerHTML = cellContents;
rowTable.appendChild(rowTabletr);
//append newly formatted contents to the row
element.append(rowTable);
},
})
},
});
表(示例)
出口(示例)
标签: jspdf tabulator jspdf-autotable