用於在 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>
. . .