Vxe UI vue vxe-table 表格中实现多行文本的编辑
vxe-table v4.8+ 要在表格中使用多行文本编辑,可以通过设置行高方式,再设置 cell-config.verticalAlign: 'top' 单元格垂直对齐方式,实现顶部对齐,因为默认是居中对齐。
代码
然后再微调一下样式,将文本域高度和宽度都是设置 100%,铺满单元格。再通过插槽自定义查看模式,同样微调高度和宽度铺满单元格。这样就能实表格单元格现多行的文本编辑。建议还是单行好一些,多行的效果不是很理想,适用于特殊需求。
html
<template>
<div>
<vxe-table
border
show-overflow
:padding="false"
:cell-config="{verticalAlign: 'top'}"
:row-config="{height: 100}"
:edit-config="editConfig"
:data="tableData">
<vxe-column field="name" title="Name" :edit-render="{autoFocus: 'textarea'}">
<template #default="{ row }">
<div class="full-cell-wrapper">
<span>{{ row.name }}</span>
</div>
</template>
<template #edit="{ row }">
<div class="full-edit-wrapper">
<vxe-textarea v-model="row.name" class="full-edit-component"></vxe-textarea>
</div>
</template>
</vxe-column>
<vxe-column field="address" title="Address" :edit-render="{autoFocus: 'textarea'}">
<template #default="{ row }">
<div class="full-cell-wrapper">
<span>{{ row.address }}</span>
</div>
</template>
<template #edit="{ row }">
<div class="full-edit-wrapper">
<vxe-textarea v-model="row.address" class="full-edit-component"></vxe-textarea>
</div>
</template>
</vxe-column>
</vxe-table>
</div>
</template>
<script>
export default {
data () {
const tableData = [
{ id: 10001, name: 'Test1', role: 'Develop', sex: 'Man', age: 28, address: 'test abc' },
{ id: 10002, name: 'Test2', role: 'Test', sex: 'Women', age: 22, address: 'Guangzhou' },
{ id: 10003, name: 'Test3', role: 'PM', sex: 'Man', age: 32, address: 'Shanghai' },
{ id: 10004, name: 'Test4', role: 'Designer', sex: 'Women', age: 24, address: 'Shanghai' }
]
const editConfig = {
trigger: 'click',
mode: 'cell'
}
return {
tableData,
editConfig
}
}
}
</script>
<style lang="scss" scoped>
.full-cell-wrapper,
.full-edit-wrapper,
.full-edit-component {
height: 100%;
width: 100%;
}
.full-cell-wrapper {
padding: 8px;
}
.full-edit-wrapper {
padding: 1px;
}
</style>