Odoo4 tree视图左上角新增Button

复制代码
# 一、直接在tree根元素中新增。这种有个限制就是必须要勾选一或多条记录的时候按钮才会显示
<tree>
  <header>
    <button type="object" class="btn-primary" name="tests" icon="fa-whatsapp" string="Import Part"/>
  </header>
</tree>
# 然后在编写处理方法
@api.model
def tests(self, select_ids):
    pass

# 二、如果你要按钮一直显示的话
# 1.tree_button_template.xml
<?xml version="1.0" encoding="UTF-8"?>
<templates id="sync_import_base_partinfo" xml:space="preserve">
  <t t-extend="ListView.buttons">
      <t t-jquery=".o_list_buttons" t-operation="append">
          <!-- 找到名为 "shipyard.parttype"的模型,并在它的列表(tree)视图后面append一个按钮 -->
          <t t-if="widget and widget.modelName == 'shipyard.parttype'">
              <!--btn表示按钮,btn-sm小按钮,btn-default默认按钮,btn-primary主要按钮?-->
              <button class="btn btn-primary o_list_tender_bt_sync_equip" type="button">Sync Import</button>
          </t>
      </t>
 </t>
</templates>
# 2.tree_button.js
odoo.define('shipyard_parttype.list_sync_import_base_partinfo_button_create', function (require) {
    "use strict";
    var ListView = require('web.ListView');
    var viewRegistry = require('web.view_registry');
    var ListController = require('web.ListController');
    ListController.include({
        renderButtons: function ($node) {
            this._super.apply(this, arguments);
            if (this.$buttons) {
                # .o_list_tender_bt_sync_equip该选择器是上边template中的
                this.$buttons.on('click', '.o_list_tender_bt_sync_equip',   this._sync_import_base_partinfo.bind(this));
            }
        },
        _sync_import_base_partinfo: function () {
            var self = this;
            var records = this.getSelectedIds();
            self._rpc({   # rpc不明白可以往上翻其他小节
                model: 'shipyard.parttype',  # 模块
                method: 'import_partitem',   # 调用的方法
                args: [records]
            },
                []
            );
        }
    });
})
;
# 3.定义python处理
@api.model
def import_partitem(self, pids):  # pids为tree列表中勾选记录的id列表
    pass
# 4.将js和xml加入到资源中去
<template id="assets_end" inherit_id="web.assets_backend">
        <xpath expr="." position="inside">
            <script src="/ship_manage/static/src/js/tree_button.js" type="text/javascript" />
        </xpath>
</template>

'qweb': [  # __manifase__.py中
        'static/src/xml/tree_button_template.xml',
],
复制代码

 

posted @   看一百次夜空里的深蓝  阅读(395)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
点击右上角即可分享
微信分享提示