Odoo14中tree标签能否自定义两行表头?求实现代码
Odoo14 实现Tree视图两行表头
Odoo14原生不支持Tree视图直接渲染两行表头,但可以通过自定义CSS+字段分组/文本拆分的方式实现类似效果,以下是具体实现步骤:
实现代码
1. 修改XML视图代码
给字段添加自定义类名,通过<br/>拆分表头文本,或用group标签模拟分组式两行表头:
<page name="test_header" string="test header"> <tree string="My Tree" class="two-line-header"> <!-- 第一组表头 --> <group string="基础信息" colspan="2"> <field name="field1" string="字段1<br/>(基础属性)" class="line-break-header"/> <field name="field2" string="字段2<br/>(核心数据)" class="line-break-header"/> </group> <!-- 第二组表头 --> <group string="扩展信息" colspan="2"> <field name="field3" string="字段3<br/>(备注说明)" class="line-break-header"/> <field name="field4" string="字段4<br/>(状态标识)" class="line-break-header"/> </group> </tree> </page>
2. 添加自定义CSS样式
在模块的static/src/css目录下创建tree_two_line.css文件,写入以下样式:
/* 允许表头文本换行 */ .o_list_view.two-line-header .o_list_header_cell .o_column_title { white-space: pre-line; line-height: 1.2; } /* 分组表头样式优化 */ .o_list_view.two-line-header .o_group_header { text-align: center; font-weight: bold; background-color: #f5f5f5; border-bottom: 1px solid #ddd; } /* 调整表头单元格内边距适配两行高度 */ .o_list_view.two-line-header .o_list_header_cell { padding: 8px 12px; }
3. 引入CSS文件
在模块的views/assets.xml中添加CSS引入配置:
<odoo> <data> <template id="assets_backend" name="two-line-tree-header-assets" inherit_id="web.assets_backend"> <xpath expr="." position="inside"> <link rel="stylesheet" href="/你的模块名称/static/src/css/tree_two_line.css"/> </xpath> </template> </data> </odoo>
注意事项
- 替换代码中的「你的模块名称」为实际模块名
- 若不需要分组表头,仅需单个字段表头换行,保留
line-break-header类和对应CSS即可 - 该方案通过前端样式修改实现,不影响Odoo核心业务逻辑
内容的提问来源于stack exchange,提问作者Pame
相关产品推荐
相关产品推荐

