我有一个像这样的表头:
我正在尝试在bootstrap-vue中重新创建此表。原始HTML看起来像这样(简化):
<table>
<thead>
<tr>
<th></th>
<th colspan="4">Group 1</th>
<th colspan="4">Group 2</th>
<!--etc-->
</tr>
<tr>
<th>Field</th>
<th>Median</th>
<!-- etc -->
</tr>
</thead>
<tbody><!-- actual data --></tbody>
</table>
核心b表代码将轻松/自动创建第二行。我试图弄清楚如何在其中塞住第一行。有点麻烦的是,我需要能够控制两个组名的内容(即,如果它们在某个地方更改了控件,则“组1”将变为“组Foo”)。
我为需要起点帮助解决此问题的任何人创建了一个游乐场:https://codesandbox.io/s/p56y3y2lnx的目标是以编程方式添加第一行,其中包括group1name
并跨越一张桌子上的桌子。
答案 0 :(得分:2)
我无法找到一种干净的方法来获得想要的结果,所以最终我遇到了一些麻烦。
在b-table
上,您可以添加一个input
事件,所以我这样做是为了知道表何时完成加载。
HTML:
<b-table @input="tableLoaded" ref="table"></b-table>
然后在我的方法中
tableLoaded() {
if (!this.$refs.table) {
return;
}
var headers = this.$refs.table.$el.querySelectorAll('thead tr');
if (headers.length > 1) {
return;//nothing to do, header row already created
}
var topHeader = document.createElement('tr');
topHeader.innerHTML =
'<th></th>'+
'<th colspan="3">Group 1</th>'+
'<th colspan="4">Group 2</th>'+
'<th colspan="4"></th>';
headers[0].parentNode.insertBefore(topHeader, headers[0]);
}
我很乐意接受更清洁的解决方案。
答案 1 :(得分:1)
从版本v2.0.0-rc.14(发布于2019-03-08)开始,您现在可以使用插槽thead-top
在标头上方添加其他行。
例如,您将以下代码放在b-table
标记内:
<template slot="thead-top" slot-scope="data">
<tr>
<th></th>
<th colspan="3">Group 1</th>
<th colspan="4">Group 2</th>
<th colspan="4"></th>
</tr>
</template>
这里是对新功能的引用:https://bootstrap-vue.js.org/docs/components/table/#adding-additional-rows-to-the-header