用于在 TreeView 中使用的数字字段的自定义小部件

下面的示例小部件演示了如何有条件地格式化 TreeView 列的单个单元格,具体取决于特定单元格中字段的值。如果字段的值为负,则它将以红色显示,并且将隐藏减号,否则它将以正常颜色显示。

小部件应该用 JavaScript 编写,让我们使用 custom_widget_name 作为新小部件的名称,your_module_name 是模块的技术名称(与模块的根目录名相同)

你模块中的 Uunder static / src / js /文件夹中添加了一个自定义小部件的 javascript 文件(比如 static / src / js / custom_widget .js):

 openerp.your_module_name = function (instance) {

    instance.web.list.columns.add('field.custom_widget_name', 'instance.your_module_name.custom_widget_name');

    instance.your_module_name.custom_widget_name = instance.web.list.Column.extend({
        _format: function (row_data, options) {
            res = this._super.apply(this, arguments);
            var amount = parseFloat(res);
            if (amount < 0){
                return "<font color='#ff0000'>"+(-amount)+"</font>";
            }
            return res
        }
    });
    //
    //here you can add more widgets if you need, as above...
    //
};

上面的示例窗口小部件可以在 float 类型的字段的列表视图中使用,它应用自定义规则,如下所示:

  • 负数:
    • 显示为红色。
    • 减号(’ - ‘字符)是隐藏的
  • 对于正数,使用默认布局。

此示例窗口小部件可以应用于 Odoo 树视图中的字段。你可以将此类小部件用于需要将自定义规则应用于的列:

. . .
<tree >
    . . .
    <field name="some_field" widget="my_widget" />
    . . .
</tree>
. . .