如何修改Odoo ERP树状视图行的显示格式?
调整Odoo树状视图行的显示方式(宽度/高度)
当然可以!在Odoo里修改树状视图的行高、列宽度完全可行,我平时常用这几种方法,根据你的需求选就行:
1. 用XML视图定义精确控制列宽度
这是最直接的方式,针对单个列设置固定宽度,适合需要精准调整特定字段显示空间的场景。你只需要在tree视图的field标签里添加width属性就行,不管是新建视图还是继承已有视图都适用。
举个继承伙伴视图调整列宽的例子:
<record id="res_partner_tree_custom" model="ir.ui.view"> <field name="name">res.partner.tree.custom</field> <field name="model">res.partner</field> <field name="inherit_id" ref="base.view_partner_tree"/> <field name="arch" type="xml"> <!-- 调整"名称"列宽度到250px --> <field name="name" position="attributes"> <attribute name="width">250</attribute> </field> <!-- 调整"邮箱"列宽度到180px --> <field name="email" position="attributes"> <attribute name="width">180</attribute> </field> </field> </record>
2. 自定义CSS统一调整行高/全局样式
如果要给整个树视图的所有行设置统一高度,或者批量调整列的最小宽度,用CSS是最高效的方式。
步骤如下:
- 在你的模块下创建
static/src/css/custom_tree.css文件,写入样式:
/* 全局调整树视图行高 */ .o_list_view .o_list_table tbody tr { height: 40px; /* 默认行高大概32px,按需修改 */ line-height: 40px; /* 让文字垂直居中 */ } /* 给所有列设置最小宽度 */ .o_list_view .o_list_table th, .o_list_view .o_list_table td { min-width: 120px; } /* 针对特定字段列调整宽度(比如partner的name列) */ .o_list_view .o_list_table th[data-name="name"], .o_list_view .o_list_table td[data-name="name"] { width: 280px; min-width: 220px; }
- 在模块的
__manifest__.py里引入这个CSS文件:
'assets': { 'web.assets_backend': [ 'your_module_name/static/src/css/custom_tree.css', ], },
这样更新模块后,所有树视图都会应用你的样式(如果要指定仅某个视图生效,可以给视图加自定义class,再在CSS里针对class写样式)。
3. JavaScript扩展(复杂场景)
如果需要动态调整行高/宽度(比如根据字段内容长度自动调整),可以用JavaScript扩展ListView。不过这种场景比较少,一般前面两种方法足够覆盖大部分需求了。
简单示例:
odoo.define('your_module_name.dynamic_tree_style', function (require) { "use strict"; var ListController = require('web.ListController'); ListController.include({ renderRows: function () { this._super.apply(this, arguments); // 动态设置行高 this.$el.find('.o_list_table tbody tr').css('height', '45px'); }, }); });
同样要在__manifest__.py里引入这个JS文件。
总结一下:个别列宽度调整用XML,全局样式/行高用CSS,复杂交互再考虑JS,根据你的需求选最适合的方式就好~
内容的提问来源于stack exchange,提问作者arevilla009
相关产品推荐
相关产品推荐

