You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Odoo 13树视图列宽调整方法咨询:CSS与Assets配置无效求可行方案

Odoo 13 树视图列宽调整失效的解决办法

我明白你在调整Odoo 13树视图列宽时遇到的麻烦——尝试了加CSS资产、给树视图加自定义类却没效果,这确实挺让人头疼的。下面给你几个经过验证的可行方案,一步步来解决:

方案一:修正CSS选择器(最直接的方法)

你之前的CSS选择器没命中正确的DOM元素,Odoo 13的树视图列是放在.o_list_table里的thtd标签上,而且会给这些标签加data-name属性对应字段名。调整你的CSS代码如下:

/* 针对自定义类aks_width_class下的work_description字段列 */
.o_list_view .aks_width_class .o_list_table th[data-name="work_description"],
.o_list_view .aks_width_class .o_list_table td[data-name="work_description"] {
    width: 175px !important;
}

为什么之前的代码失效?

你原来的选择器.aks_width_class[data-id="work_description"]逻辑错误:data-id并不是绑定在树视图的根元素上,而是每个列的th/td才会带有对应字段的标识,而且需要通过层级选择器定位到这些子元素。加上!important是为了覆盖Odoo默认的样式优先级。

方案二:用JS继承TreeRenderer强制设置宽度(CSS失效时的备选)

如果CSS还是被Odoo的默认样式覆盖,我们可以通过继承Odoo的Tree视图渲染器来动态设置列宽:

  1. 在模块的static/js目录下创建tree_width.js文件,内容如下:
odoo.define('aks_workbook.tree_view_width', function (require) {
    "use strict";

    var ListRenderer = require('web.ListRenderer');

    ListRenderer.include({
        // 渲染表头单元格时设置宽度
        _renderHeaderCell: function (node) {
            var $th = this._super.apply(this, arguments);
            // 仅当树视图有自定义类且字段匹配时设置宽度
            if (node.attrs.name === 'work_description' && this.$el.hasClass('aks_width_class')) {
                $th.css('width', '175px');
            }
            return $th;
        },
        // 渲染表体单元格时设置宽度
        _renderBodyCell: function (record, node) {
            var $td = this._super.apply(this, arguments);
            if (node.attrs.name === 'work_description' && this.$el.hasClass('aks_width_class')) {
                $td.css('width', '175px');
            }
            return $td;
        },
    });
});
  1. 修改你的assets.xml,把JS文件添加到后端资产中:
<?xml version="1.0" encoding="utf-8"?>
<odoo>
 <template id="assets_backend_aks_workbook" name="AKS workbook" inherit_id="web.assets_backend">
 <xpath expr="." position="inside">
 <link rel="stylesheet" href="/alkidhma/aks_workbook/static/css/aks_workbook.css"/>
 <!-- 新增JS引用 -->
 <script type="text/javascript" src="/alkidhma/aks_workbook/static/js/tree_width.js"></script>
 </xpath>
 </template>
</odoo>

最后必做的验证步骤

  1. 确保你的模块已经重新安装(不是更新,重新安装能确保资产被正确加载)
  2. 强制刷新浏览器缓存(按Ctrl+Shift+R),避免浏览器加载旧的静态资源
  3. 检查树视图的自定义类aks_width_class是否正确添加,和CSS/JS中的类名完全一致

内容的提问来源于stack exchange,提问作者Raihan

火山引擎 最新活动