美文网首页
odoo13 tree视图增加按钮

odoo13 tree视图增加按钮

作者: grey_27 | 来源:发表于2020-09-19 20:30 被阅读0次

之前写过一遍oooo10版本的增加按钮方法,在odoo13中已经不太适用,现在更新一下在13版本中增加按钮的方法,方法其实都大同小异,直接上代码

  • xml:qweb设置按钮模板
<?xml version="1.0" encoding="UTF-8"?>

<templates>
    <t t-name="add_tree_button.product_test_button">
        <!--前两个class用于设置button样式 固定写法,最后一个需设置一个唯一值用于绑定事件-->
        <button type="button" class="btn btn-primary o_product_test_button">
            测试tree按钮
        </button>
    </t>
</templates>

这个xml需要在manifest中写入qweb项才会生效

  • js:设置按钮的逻辑方法
odoo.define('add_tree_button.product_tree_button', function (require) {
    "use strict";
    var core = require('web.core');
    var ListController = require('web.ListController');
    var ListView = require('web.ListView');
    var viewRegistry = require('web.view_registry');

    var QWeb = core.qweb;

    var ProductListController = ListController.extend({
        /**
         * 继承tree视图的控制器,增加我们自定义按钮的绑定时间
         * @override
         */
        renderButtons: function () {
            this._super.apply(this, arguments);
            // 渲染qweb模板,展示测试按钮,这里的值为模板名
            this.$buttons.append($(QWeb.render("add_tree_button.product_test_button", this)));
            var self = this;
            // 按类名绑定按钮点击事件
            this.$buttons.on('click', '.o_product_test_button', function () {
                // 1.打开视图
                self.do_action({
                    type: 'ir.actions.act_window',
                    res_model: 'product.template',
                    target: 'new',
                    views: [[false, 'form']],
                    flags: {mode: 'edit'},
                }, {
                    on_reverse_breadcrumb: function () {
                        self.reload();
                    },
                    on_close: function () {
                        self.reload();
                    }
                });

                // 2.执行python代码
                // if (self.getSelectedIds().length == 0) {
                //     return;
                // }
                // return self._rpc({
                //     model: 'product.template',
                //     method: 'test_print',
                //     // 传入选择数据的id
                //     args: [self.getSelectedIds()],
                // });
                
            });
        }
    });

    var ProductListView = ListView.extend({
        /**
         * 继承tree视图,将上面的控制逻辑加入视图中
         * @override
         */
        config: _.extend({}, ListView.prototype.config, {
            Controller: ProductListController,
        }),
    });

    // 注册视图,上面使用派生继承,没有修改原本的tree视图,所以需要注册后使用
    viewRegistry.add('product_tree_button', ProductListView );
});

  • xml: 引入自定义js
<?xml version="1.0" encoding="utf-8"?>
<odoo>
    <!--引入js-->
    <template id="assets_backend" inherit_id="web.assets_backend">
        <xpath expr="script[last()]" position="after">
            <script type="text/javascript" src="/add_tree_button/static/src/js/list_view.js"></script>
        </xpath>
    </template>
</odoo>
  • xml:在tree视图中指定使用自定义的list_view
<?xml version="1.0" encoding="utf-8"?>
<odoo>
    <record id="product_template_tree_view_inherit" model="ir.ui.view">
        <field name="name">product.template.tree.view.inherit</field>
        <field name="model">product.template</field>
        <field name="inherit_id" ref="product.product_template_tree_view"/>
        <field name="arch" type="xml">
            <xpath expr="//tree" position="attributes">
                <!--修改js_class属性改为使用自定义的list_view-->
                <attribute name="js_class">product_tree_button</attribute>
            </xpath>
        </field>
    </record>
</odoo>

相关文章

  • odoo13 tree视图增加按钮

    之前写过一遍oooo10版本的增加按钮方法,在odoo13中已经不太适用,现在更新一下在13版本中增加按钮的方法,...

  • 新建按钮

    方法一:需要依赖工具包 在tree视图上创建,导入按钮旁边新添加按钮 需要将依赖的工具,名为tree_view_b...

  • odoo12 如何在tree视图顶部增加按钮

    本例的需求是在购票(ticket_management)(模型 ticket.management)tree视图顶...

  • Toolbar的一次邂逅

    toolbar 初次见面 Toolbar功能: 设置导航按钮 设置logo 设置标题和子标题 增加自定义视图 增加...

  • odoo10中在tree视图创建旁边增加按钮

    目标要求:在系统的创建按钮旁边增加新的按钮实现自定义的功能 一 新增一个按钮 odoo的前端都是qweb渲染的,找...

  • SYMoreButtonView多按钮视图

    SYMoreButtonView多种按钮样式(带图标筛选按钮视图、多按钮选择滚动视图……)。 代码示例

  • 事件运用案例

    一、视图遮挡按钮,按钮无法响应点击事件。 如图一所示,红色按钮在蓝色视图的下面,如何来点击蓝色视图,让红色按钮也能...

  • iOS按钮不响应点击事件

    如果子视图超出父视图的范围,则按钮无法响应点击事件。解决办法:查看视图层级,查看按钮的所有父视图,找到不在子视图范...

  • 自定义窗口漂浮按钮,可随便拖动

    按钮放置窗口上,用户可随便拖动按钮到任意的位置,当位置超出窗口的时候,按钮会自动移动到视图边缘,按钮移动到视图中间...

  • iOS UINavigationController 添加导航栏

    场景模拟:点击一个按钮,弹出一个导航视图。导航视图中包含左按钮:取消按钮;右按钮:存储信息(什么乱起八糟的随你) ...

网友评论

      本文标题:odoo13 tree视图增加按钮

      本文链接:https://www.haomeiwen.com/subject/pgryyktx.html