当使用vuedragable包来启用列的拖动和重新排序时,如何使Vue.js DataGrid组件的标题和列体正确对齐?
下面是我目前为DataGrid.vue组件编写的代码:
<template>
<div class="table-responsive">
<table class="table table-striped table-hover" v-if="selectedColumns.length > 0">
<thead>
<draggable :list="selectedColumns" group="columns" @end="onEnd">
<th v-for="(column, index) in selectedColumns" :key="index">{{ column }}</th>
</draggable>
</thead>
<tbody>
<draggable v-model="mergedData" group="rows">
<tr v-for="(data, index) in mergedData" :key="index">
<td v-for="(column, index) in selectedColumns" :key="index">
{{ data[column.toLowerCase().replace(' ', '_')] !== undefined ? data[column.toLowerCase().replace(' ', '_')] : 'N/A' }}
</td>
</tr>
</draggable>
</tbody>
</table>
</div>
</template>
<script>
import draggable from 'vuedraggable';
export default {
name: 'DataGrid',
components: {
draggable,
},
props: {
selectedColumns: {
type: Array,
required: true,
},
mergedData: {
type: Array,
required: true,
},
},
methods: {
onEnd(event) {
const oldIndex = event.oldIndex;
const newIndex = event.newIndex;
this.selectedColumns.splice(newIndex, 0, this.selectedColumns.splice(oldIndex, 1)[0]);
},
},
};
</script>
<style scoped>
/* Add any custom styles here */
</style>
我已经尝试使用具有table-responsive类的div Package table元素,但标题和列体仍然没有正确对齐。如何在保持响应性和拖动功能的同时使表内容正确对齐?
我的当前表如下所示:
1条答案
按热度按时间v8wbuo2f1#
我能解决这个问题,
因为我使用的是
vuedgraggable
库,所以它会动态地 Package 我的<th>...</th>
并添加一个额外的<div>
。所以是这样的,
它还用
<div>
Package 了<td>
所以我在我的vuejs组件中添加了以下CSS:
这解决了我的标题和列内容对齐问题,保持拖动功能不变。